3dwoo大學簡體電腦書店
Storm:大數據流式計算及應用實踐
( 簡體 字)
作者:丁維龍,趙卓峰,韓燕波類別:1. -> 程式設計 -> 大數據
出版社:電子工業出版社Storm:大數據流式計算及應用實踐 3dWoo書號: 41033
詢問書籍請說出此書號!
有庫存
NT售價: 240
出版日:3/1/2015
頁數:264
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121195686 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第一篇 理論篇 流式數據處理概論
第1章 大數據環境下的云計算與物聯網 3
1.1 云計算與物聯網 3
1.1.1 云計算 3
1.1.2 物聯網 6
1.2 大數據下的新挑戰 8
1.2.1 大數據及其特征 8
1.2.2 大數據處理的技術挑戰 11
1.3 本章小結 14
第2章 流式實時數據處理:理論與技術 15
2.1 流式數據與流式實時計算 15
2.1.1 流式數據 15
2.1.2 流式實時計算 18
2.2 流式數據處理的系統與應用 20
2.2.1 發展與挑戰 20
2.2.2 Hadoop 2.0生態圈 22
2.3 Storm 27
2.3.1 起源與發展:Twitter的開源與影響 27
2.3.2 功能 29
2.3.3 特色:可擴展、可靠的分布式流式數據處理 30
2.4 其他開源流式數據處理系統 34
2.4.1 Yahoo S4 34
2.4.2 Spark Streaming 37
2.4.3 Facebook Puma 41
2.5 本章小結 42
第3章 實際案例:城市道路車輛 數據的實時監控分析系統 43
3.1 背景與需求分析 43
3.1.1 背景 43
3.1.2 數據處理的業務需求 45
3.2 數據處理系統的架構設計與技術選型 46
3.2.1 架構設計 46
3.2.2 技術選型 48
3.3 本章小結 49
第二篇 應用基礎篇 流式數據處理系統Storm的基礎原理
第4章 Storm的系統模型:架構與組成 53
4.1 系統架構與部署模式 53
4.1.1 系統架構 53
4.1.2 單機/分布式部署 56
4.1.3 本地模式 58
4.2 系統節點 59
4.2.1 Zookeeper:協調節點 59
4.2.2 nimbus:主控節點 63
4.2.3 supervisor:工作節點 65
4.2.4 UI:控制臺節點 68
4.3 本章小結 70
第5章 Storm的通信模型 71
5.1 Thrift: 可擴展且跨語言的通信軟件框架 71
5.1.1 Thrift的基礎概念 71
5.1.2 基于Thrift的數據通信 74
5.2 Thrift在Storm中的應用:系統節點間的通信 75
5.2.1 接口的定義與實現 75
5.2.2 客戶端與Storm系統的通信 82
5.3 ZeroMQ在Storm中的應用:Storm作業任務間的通信 83
5.3.1 ZeroMQ:面向分布式并發應用的高性能異步消息處理庫 83
5.3.2 Tuple與declareOutputFields(): 數據項結構及聲明 86
5.4 Storm 可配置的通信機制 89
5.5 本章小結 90
第6章 Storm的作業單元:Topology 91
6.1 Topology結構及構成 91
6.2 Stream:組件間的數據傳遞 93
6.2.1 概述 93
6.2.2 Stream Grouping: 流組模式 94
6.2.3 自定義流組 101
6.3 構建Topology 104
6.3.1 TopologyBuilder與Config 104
6.3.2 Topology構建示例 106
6.3.3 Topology常見的編程模式 107
6.4 本章小結 109
第7章 Storm的數據源編程單元:Spout 110
7.1 Spout的接口與實現 110
7.1.1 Spout與接口層次結構 110
7.1.2 ISpout和IComponent接口 111
7.1.3 接口的實現類及實例 113
7.2 Spout的使用模式 115
7.2.1 直接連接 115
7.2.2 隊列連接 119
7.3 Spout與數據的可靠性 121
7.3.1 可靠的Spout與不可靠的Spout 121
7.3.2 可靠的Spout的數據項管理 122
7.4 本章小結 125
第8章 Storm的數據處理編程單元:Bolt 126
8.1 Bolt的接口與實現 126
8.1.1 Bolt與接口層次 126
8.1.2 IBolt和IComponent接口 127
8.1.3 接口的實現類及實例 131
8.2 Bolt與數據的可靠性 133
8.2.1 可靠的Bolt與不可靠的Bolt 133
8.2.2 可靠的Bolt的數據項管理 133
8.2.3 IBasicBolt和BaseBasicBolt 136
8.3 本章小結 137
第9章 Storm的保障能力 138
9.1 Storm的功能性保障:多粒度的并行化 138
9.1.1 并發模型 138
9.1.2 并行度配置 139
9.1.3 可插拔的自定義調度器 144
9.2 Storm的非功能性保障:多級別的可靠性 149
9.2.1 不同級別的容錯機制 149
9.2.2 記錄級容錯:保障數據項不丟失 151
9.2.3 記錄級容錯的原理:acker任務與追蹤算法 157
9.3 本章小結 164
第10章 Storm的特定應用 165
10.1 分布式遠程過程調用 165
10.1.1 概述 165
10.1.2 DRPC的構建與使用 166
10.1.3 Storm的DRPC原理 171
10.2 事務型作業 173
10.2.1 概述 173
10.2.2 Transactional Topology的構建與使用 175
10.2.3 Transactional Topology的編程接口與事務型的實現 179
10.2.4 CoordinatedBolt的原理 181
10.3 非Java語言的開發 182
10.3.1 支持多語言的協議 182
10.3.2 Shell組件 187
10.4 本章小結 189
第三篇 應用實踐篇 基于流式數據處理系統Storm的開發
第11章 Storm的系統部署 193
11.1 系統環境 193
11.2 依賴程序的安裝 194
11.2.1 libuuid, libuuid-devel, gcc-c++, libtool 194
11.2.2 ZeroMQ和JZMQ 196
11.3 Storm的安裝與配置 198
11.3.1 Zookeeper的安裝與配置 198
11.3.2 單機模式和集群模式下Storm的安裝、配置和啟動 200
11.3.3 Storm各節點的服務啟動 203
11.4 Storm集群水平擴展工作節點 206
11.5 本章小結 207
第12章 Storm應用的開發與調試 208
12.1 Eclipse環境下的Storm工程 208
12.1.1 Eclipse開發環境 208
12.1.2 將Storm-starter組織為Eclipse工程 210
12.2 Storm應用的開發、調試與部署 212
12.2.1 本地開發與調試 212
12.2.2 遠程部署 213
12.3 常見問題與應對技巧 215
12.3.1 ZeroMQ版本 215
12.3.2 Zookeeper日志清理 216
12.3.3 Topology作業的打包與遠程部署 216
12.4 本章小結 217
第13章 項目案例分析 218
13.1 業務計算的設計 218
13.1.1 需求分析 218
13.1.2 概要設計 219
13.2 業務計算的實現 220
13.2.1 Topology的構建 220
13.2.2 JmsSpout的實現 222
13.2.3 三個Bolt的實現 224
13.3 本章小結 229
附錄 218
參考文獻 232
后記 237
Storm作為實時的、分布式以及具備高容錯的流式計算系統,對比適于海量數據批處理的hadoop,不僅簡化了數據流上相關處理的并行編程復雜度,也提供了數據處理實時性、可靠性和集群節點動態伸縮的特性。本書通過各自章節的詳細闡述和應用,全面介紹了Storm的溯源發展、核心概念和集群配置、可靠性保障關鍵技術、常用的并行流模型編程范式,關鍵數據結構和源碼解析等。本書的一大特色是,書中所有實例,均來自筆者所在團隊的實際應用,是一個在智能交通背景下的城市道路車輛實時監控系統。

信息技術行業在過去的不長時期內,經歷了多種概念的出現、發展和消亡。而當今,最火熱的IT詞匯,無外乎“大數據”、“云計算”和“物聯網”;而相應的支撐技術,諸如Hadoop、HDFS和Cassandra等,均得到了廣泛關注和研究。特別是以Hadoop生態系統為代表的大規模數據處理技術,已經成為業界事實上的標準之一。但是,Hadoop/MapReduce這類數據處理技術和所構建的分布式系統,針對數據邊界清晰的數據進行批處理操作,涉及作業的啟動、中間結果寫盤緩存和共享存儲模式的數據傳輸,使得數據處理結果存在較長延遲,無法提供持續處理的能力。基于Hadoop/MapReduce計算框架的系統,可針對大規模數據實現批處理,但在高速并發的環境下,無法滿足實時、連續處理的需求。于是,編程標準化、可靠和可伸縮的數據處理的計算模型和框架,成為實時數據處理生態系統的一個巨大缺失,而從Twitter公司開源的Storm,恰好填補了這個空白。
Storm作為開源的實時數據處理系統,較之實時計算領域如同批數據處理領域的Hadoop,不僅降低了數據處理的并行編程的復雜度,也提供了數據不丟失的保證和集群節點動態部署的特性。具體來說,Storm的關鍵特性如下。
1.編程語義的簡化和跨編程語言的集成。通過Storm的核心編程抽象,如Topology, Spout和Bolt,可以便捷地接入消息隊列,接收數據、更新數據和追蹤數據,并可以靈活地指派數據在組件之間的分片方式。特別是由于采用了Apache Thrift接口,Storm僅要求組件間遵循同一套接口描述,而不綁定兩端具體的實現語言。因此,Storm有著廣泛適用場景,如在異構環境下,集成處理數據流和更新持久化數據,并行化地持續查詢指定數據流。
2.數據處理的可靠性保障。在可用性要求高的場景下,數據是不允許丟失的,要求系統必須保證所有的數據被成功地處理。Storm通過配置消息反饋策略,可對異常節點的數據重新發送,保證到達系統的數據被最終處理。而節點的故障會被及時捕獲并使得業務計算自動重新分配,保證數據處理的連續性和可靠性。同時,在數據正確性要求高的場景下,為了避免數據冗余和保證數據僅被處理一次,Storm給出了事務型處理的概念和模型,可在用戶業務邏輯不改變的情況下,通過配置編程組件實現。這類因素也是相對于早先Yahoo開源同類系統的S4最重要的優勢。
3.計算節點的可伸縮性和集群配置的簡便易行。Storm集群管理只需要通過維護有限數量的配置文件完成,保證集群中節點可管可控,其節點的動態接入和計算自動重分配也是一大亮點。若當前的計算資源成為處理瓶頸,可以通過水平擴展節點實現數據處理的伸縮,也即增加機器和提升計算的并行度。官網的實驗結果表明,10個節點的Storm集群下,應用的吞吐量可達每秒1000 000個消息,其中還包括每秒100多次的數據庫存取調用。
正是由于上述特點,Storm獲得了業界的廣泛關注與贊譽。同時,由于活躍的社區貢獻,其代碼日趨成熟與穩定,在開源后的兩年內,已經在數十個企業中實現了商業級應用,如Groupon、The Weather Channel、Twitter、Yahoo、淘寶和阿里巴巴等。
本書全面介紹了Storm的溯源發展、核心概念和集群配置、可靠性保障關鍵技術、常用的并行流模型編程范式、關鍵數據結構和源碼解析等。本書的一大特色是,書中所有實例均來自編者所在團隊的實際應用,是一個在智能交通背景下的分布式實時車牌流監控系統。希望通過理論結合實踐,本書能為當前火熱的大數據背景下的分布式系統開發,貢獻一點微不足道的力量。
編 者
pagetop