3dwoo大學簡體電腦書店
實時大數據分析——基于Storm、Spark技術的實時應用
( 簡體 字)
作者:[美]Sumit Gupta, Shilpi Saxena 著 張廣駿 譯類別:1. -> 程式設計 -> Spark
出版社:清華大學出版社實時大數據分析——基于Storm、Spark技術的實時應用 3dWoo書號: 48764
詢問書籍請說出此書號!
有庫存
NT售價: 395
出版日:1/1/2018
頁數:242
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302477280 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章大數據技術前景及分析平臺1
1.1大數據的概念1
1.2大數據的維度范式2
1.3大數據生態系統3
1.4大數據基礎設施4
1.5大數據生態系統組件5
1.5.1構建業務解決方案8
1.5.2數據集處理8
1.5.3解決方案實施8
1.5.4呈現9
1.6分布式批處理9
1.7分布式數據庫(NoSQL)13
1.7.1NoSQL數據庫的優勢15
1.7.2選擇NoSQL數據庫16
1.8實時處理16
1.8.1電信或移動通信場景17
1.8.2運輸和物流17
1.8.3互聯的車輛18
1.8.4金融部門18
1.9本章小結18
第2章熟悉Storm19
2.1Storm概述19
2.2Storm的發展20
2.3Storm的抽象概念22
2.3.1流22
2.3.2拓撲22
2.3.3Spout23
2.3.4Bolt23
2.3.5任務24
2.3.6工作者25
2.4Storm的架構及其組件25
2.4.1Zookeeper集群25
2.4.2Storm集群25
2.5如何以及何時使用Storm27
2.6Storm的內部特性32
2.6.1Storm的并行性32
2.6.2Storm的內部消息處理34
2.7本章小結36
第3章用Storm處理數據37
3.1Storm輸入數據源37
3.2認識Kafka38
3.2.1關于Kafka的更多知識39
3.2.2Storm的其他輸入數據源43
3.2.3Kafka作為輸入數據源46
3.3數據處理的可靠性47
3.3.1錨定的概念和可靠性49
3.3.2Storm的acking框架51
3.4Storm的簡單模式52
3.4.1聯結52
3.4.2批處理53
3.5Storm的持久性53
3.6本章小結58
第4章Trident概述和Storm性能優化59
4.1使用Trident59
4.1.1事務60
4.1.2Trident拓撲60
4.1.3Trident操作61
4.2理解LMAX65
4.2.1內存和緩存66
4.2.2環形緩沖區—粉碎器的心臟69
4.3Storm的節點間通信72
4.3.1ZeroMQ73
4.3.2Storm的ZeroMQ配置74
4.3.3Netty74
4.4理解StormUI75
4.4.1StormUI登錄頁面75
4.4.2拓撲首頁78
4.5優化Storm性能80
4.6本章小結83
第5章熟悉Kinesis84
5.1Kinesis架構概述84
5.1.1AmazonKinesis的優勢和用例84
5.1.2高級體系結構86
5.1.3Kinesis的組件87
5.2創建Kinesis流服務90
5.2.1訪問AWS90
5.2.2配置開發環境91
5.2.3創建Kinesis流93
5.2.4創建Kinesis流生產者97
5.2.5創建Kinesis流消費者102
5.2.6產生和消耗犯罪警報102
5.3本章小結105
第6章熟悉Spark106
6.1Spark概述107
6.1.1批量數據處理107
6.1.2實時數據處理108
6.1.3一站式解決方案ApacheSpark110
6.1.4何時應用Spark—實際用例112
6.2Spark的架構114
6.2.1高級架構114
6.2.2Spark擴展/庫116
6.2.3Spark的封裝結構和API117
6.2.4Spark的執行模型—主管-工作者視圖119
6.3彈性分布式數據集(RDD)122
6.4編寫執行第一個Spark程序124
6.4.1硬件需求125
6.4.2基本軟件安裝125
6.4.3配置Spark集群127
6.4.4用Scala編寫Spark作業129
6.4.5用Java編寫Spark作業132
6.5故障排除提示和技巧133
6.5.1Spark所用的端口數目134
6.5.2類路徑問題—類未找到異常134
6.5.3其他常見異常134
6.6本章小結135
第7章使用RDD編程136
7.1理解Spark轉換及操作136
7.1.1RDDAPI137
7.1.2RDD轉換操作139
7.1.3RDD功能操作141
7.2編程Spark轉換及操作142
7.3Spark中的持久性157
7.4本章小結159
第8章Spark的SQL查詢引擎——SparkSQL160
8.1SparkSQL的體系結構161
8.1.1SparkSQL的出現161
8.1.2SparkSQL的組件162
8.1.3CatalystOptimizer164
8.1.4SQL/Hivecontext165
8.2編寫第一個SparkSQL作業166
8.2.1用Scala編寫SparkSQL作業166
8.2.2用Java編寫SparkSQL作業170
8.3將RDD轉換為DataFrame173
8.3.1自動化過程174
8.3.2手動過程176
8.4使用Parquet179
8.4.1在HDFS中持久化Parquet數據182
8.4.2數據分區和模式演化/合并185
8.5Hive表的集成186
8.6性能調優和最佳實踐190
8.6.1分區和并行性191
8.6.2序列化191
8.6.3緩存192
8.6.4內存調優192
8.7本章小結194
第9章用SparkStreaming分析流數據195
9.1高級架構195
9.1.1SparkStreaming的組件196
9.1.2SparkStreaming的封裝結構198
9.2編寫第一個SparkStreaming作業200
9.2.1創建流生成器201
9.2.2用Scala編寫SparkStreaming作業202
9.2.3用Java編寫SparkStreaming作業205
9.2.4執行SparkStreaming作業207
9.3實時查詢流數據209
9.3.1作業的高級架構209
9.3.2編寫Crime生產者210
9.3.3編寫Stream消費者和轉換器212
9.3.4執行SQLStreamingCrime分析器214
9.4部署和監測216
9.4.1用于SparkStreaming的集群管理器216
9.4.2監測SparkStreaming應用程序218
9.5本章小結219
第10章介紹Lambda架構220
10.1什么是Lambda架構220
10.1.1Lambda架構的需求220
10.1.2Lambda架構的層/組件222
10.2Lambda架構的技術矩陣226
10.3Lambda架構的實現228
10.3.1高級架構229
10.3.2配置ApacheCassandra和Spark230
10.3.3編寫自定義生產者程序233
10.3.4編寫實時層代碼235
10.3.5編寫批處理層代碼238
10.3.6編寫服務層代碼239
10.3.7執行所有層代碼241
10.4本章小結243
本書詳細闡述了實時大數據分析的實現過程,主要包括大數據技術前景及分析平臺;熟悉Storm平臺;用Storm處理數據;Trident介紹和Storm性能優化;熟悉Kinesis;熟悉Spark;RDD編程;Spark的SQL查詢引擎;Spark Streaming分析流數據以及Lambda架構等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
對于現代企業而言,處理過去10~20年的歷史數據并進行分析以獲得提升業務的洞見是當今最為熱門的用例。
企業過去曾執迷于數據倉庫的開發。通過這些數據倉庫,企業努力從每個可能的數據源獲取數據并存儲下來,再利用各種商業智能工具對數據倉庫中存儲的數據進行分析。但是開發數據倉庫是一個復雜、耗時和大開銷的過程,需要相當程度的資金和時間投入。
Hadoop及其生態系統的涌現無疑為海量大數據問題的處理提供了一種新的方法或架構,通過這種低成本、可伸縮的解決方案,過去需要數天時間處理的成TB數據將在幾小時內被處理完畢。盡管有著這樣的優勢,在其他一些需要實時或準實時(如亞秒級服務等級協議SLA)執行分析及獲得業務洞見的應用場景中,Hadoop還是面臨著批處理性能方面的挑戰。這類應用需求可稱為實時分析(RTA)或準實時分析(NRTA),有時又被稱為“快數據”,后者意味著做出準實時決策的能力,即要在有限的商務決策時間內提供卓有成效的數據支持。
為應對這些企業實時數據分析的應用場景,出現了一些高性能、易于使用的開源平臺。Apache Storm和Apache Spark是其中最為引人注目的代表性平臺,能夠為廣大相關用戶提供實時數據處理和分析功能。這兩個項目都歸屬于Apache軟件基金會。盡管有部分功能重疊,這兩個工具平臺仍保持著各自的特色和不同功能。
考慮到以上的大數據技術背景,本書結合實際用例介紹了應用Apache Storm和Apache Spark進行實時大數據分析的實現過程,為讀者提供了快速設計、應用和部署實時分析所需的技術。
本書內容
第1章“大數據技術前景及分析平臺”奠定了全書的知識背景,主要包括大數據前景的綜述、大數據平臺上采用的各種數據處理方法、進行數據分析所用的各種平臺。本章也介紹了實時或準實時批量分布式處理海量數據的范式。此外,還涉及處理高速/高頻數據讀寫任務的分布式數據庫。
第2章“熟悉Storm”介紹了實時/準實時數據處理框架Apache Storm的概念、架構及編程方法。這里涉及多種Storm的基本概念,諸如數據源(spouts)、數據流處理組件(bolts)、并行度(parallelism)等。本章還以豐富的應用場景及范例說明如何利用Storm進行實時大數據分析。
第3章“用Storm處理數據”著重于介紹Apache Storm中用于處理實時或準實時數據流的內部操作,如過濾(filters)、連接(joins)、聚合(aggregators)等。這里展示了Storm對Apache Kafka、網絡通信接口、文件系統等多種輸入數據源的集成,最后利用Storm JDBC框架將處理過的數據保存起來。本章還提到Storm中多種企業關注的數據流處理環節,諸如可靠性、消息獲取等。
第4章“Trident概述和Storm性能優化”驗證了實時或準實時事務數據的處理。這里介紹了實時處理框架Trident,它主要用于處理事務數據。在此提到使用Trident處理事務應用場景的幾種架構。這一章還提到多種概念和可用參數,進而探討了它們對Storm框架與其任務的監測、優化以及性能調整諸方面的可用性。本章還涉及LMAX、環形緩沖區、ZeroMQ等Storm內部技術。
第5章“熟悉Kinesis”提到了在云上可用的實時數據處理技術Kinesis,此技術是亞馬遜云計算平臺AWS中的實時數據處理服務。這里先說明了Kinesis的架構和組成部分,接著用一個端到端的實時報警發生范例闡明了Kinesis的用法,其中使用到KCL、KPL等客戶端庫。
第6章“熟悉Spark”介紹了Apache Spark的基礎知識,其中包括Spark程序的高級架構和構建模塊。這里先從Spark的縱覽開始,接著提到了Spark在各種批處理和實時用戶場景中的應用情況。這一章還深入講到Spark的高級架構和各種組件。在本章的最后部分討論了Spark集群的安裝、配置以及第一個Spark任務的執行實現。
第7章“使用RDD編程”對Spark RDD進行了代碼級的預排。這里說明了RDD API提供的各種編程操作支持,以便于使用者輕松實現數據轉換和保存操作。在此還闡明了Spark對如Apache Cassandra這樣的NoSQL數據庫的集成。
第8章“Spark的SQL查詢引擎——Spark SQL”介紹了Spark SQL,這是一個和Spark協同工作的SQL風格的編程接口,可以幫助讀者將Parquet或Hive這樣的數據集快速應用到工作中,并支持通過DataFrame或原始SQL語句構建查詢。本章同時推薦了一些Spark數據庫的最佳實踐案例。
第9章“用Spark Streaming分析流數據”介紹了Spark的又一個擴展工具Spark Streaming,用于抓取和處理實時或準實時的流數據。這里順承著Spark架構簡明扼要地描述了Spark Streaming中用于數據加載、轉換、持久化等操作的各種應用編程接口。為達成實時查詢數據,本章將Spark SQL和Spark Streaming進行了深入集成。本章最后討論了Spark Streaming任務部署和監測等方面的內容。
第10章“介紹Lambda架構”引領讀者認識了新興的Lambda架構,這個架構可以將實時和預計算的批量數據結合起來組成一個混合型的大數據處理平臺,從其中獲得對數據的準實時理解。本章采用了Apache Spark并討論了Lambda架構在實際應用場景中的實現。
本書閱讀基礎
本書的讀者最好擁有Java或Scala語言的編程經驗,對Apache Hadoop等代表性分布式計算平臺的基礎知識亦有一定了解。
本書適用讀者
本書主要面向應用開源技術進行實時分析應用和框架開發的大數據架構師、開發者及程序員群體。這些有實力的開發者閱讀本書時可以運用Java或Scala語言的功底來進行高效的核心要素和應用編程實現。
本書會幫助讀者直面不少大數據方面的難點及挑戰。書里不但包括應用于實時/準實時流數據及高頻采集數據處理分析的大量工具和技術,而且涵蓋了Apache Storm、Apache Spark、Kinesis等各種工具和技術的內存分布式計算范式。
本書約定
本書應用了一些文本格式以區分不同類型的信息。以下是這些文本格式范例和含義說明。
文中的代碼、數據庫表名稱、文件目錄名稱、文件名、文件擴展名、路徑名、偽URL、用戶輸入以及推特用戶定位采用如下方式表示:
“The PATH variable should have the path to Python installation on your machine.”

代碼塊則通過下列方式設置:

public class Count implements CombinerAggregator {
@Override
public Long init(TridentTuple tuple) {
return 1L;
}

命令行輸入和輸出的顯示方式如下所示:

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

圖標表示警告提醒或重要的概念。
圖標表示提示或相關操作技巧。
讀者反饋
歡迎讀者對本書反饋意見或建議,以便于我們進一步了解讀者的閱讀喜好。反饋意見對于我們十分重要,便于我方日后工作的改進。
pagetop