第1章 緒論 1
1.1 Storm的基本組件 2
1.1.1 集群組成 2
1.1.2 核心概念 3
1.1.3 Storm的可靠性 5
1.1.4 Storm的特性 6
1.2 其他流式處理框架 6
1.2.1 Apache S4 6
1.2.2 Spark Streaming 6
1.2.3 流計算和Storm的應用 7
第2章 實時平颱介紹 11
2.1 實時平颱架構介紹 11
2.2 Kafka架構 13
2.2.1 Kafka的基本術語和概念 13
2.2.2 Kafka在實時平颱中的應用 14
2.2.3 消息的持久化和順序讀寫 15
2.2.4 sendfile係統調用和零復製 15
2.2.5 Kafka的客戶端 17
2.2.6 Kafka的擴展 17
2.3 大眾點評實時平颱 17
2.3.1 相關數據 18
2.3.2 實時平颱簡介 18
2.3.3 Blackhole 19
2.4 1號店實時平颱 20
第3章 Storm集群部署和配置 23
3.1 Storm的依賴組件 23
3.2 Storm的部署環境 24
3.3 部署Storm服務 24
3.3.1 部署ZooKeeper 24
3.3.2 部署Storm 25
3.3.3 配置Storm 25
3.4 啓動Storm 28
3.5 Storm的守護進程 28
3.6 部署Storm的其他節點 30
3.7 提交Topology 30
第4章 Storm內部剖析 33
4.1 Storm客戶端 33
4.2 Nimbus 36
4.2.1 啓動Nimbus服務 36
4.2.2 Nimbus服務的執行過程 38
4.2.3 分配Executor 44
4.2.4 調度器 46
4.2.5 默認調度器DefaultScheduler 47
4.2.6 均衡調度器EvenScheduler 50
4.3 Supervisor 53
4.3.1 ISupervisor接口 54
4.3.2 Supervisor的共享數據 54
4.3.3 Supervisor的執行過程 56
4.4 Worker 61
4.4.1 Worker中的數據流 61
4.4.2 創建Worker的過程 62
4.5 Executor 65
4.5.1 Executor的創建 66
4.5.2 創建Spout的Executor 69
4.5.3 創建Bolt的Executor 74
4.6 Task 76
4.6.1 Task的上下文對象 77
4.6.2 Task的創建 82
4.7 Storm中的統計 84
4.7.1 stats框架 85
4.7.2 metric框架 90
4.8 Ack框架 91
4.8.1 Ack的原理 92
4.8.2 Acker Bolt 94
4.9 Storm總體架構 95
第5章 Storm運維和監控 97
5.1 主機信息監控 97
5.1 日誌和監控 98
5.2 Storm UI和NimbusClient 99
5.3 Storm Metric的使用 100
5.4 Storm ZooKeeper的目錄 102
5.5 Storm Hook的使用 104
第6章 Storm的擴展 107
6.1 Storm UI的擴展 107
6.1.1 Storm UI原生功能 108
6.1.2 Storm UI新功能需求 108
6.1.3 Storm的Thrift接口 109
6.2 資源隔離 110
6.2.1 CGroup測試 111
6.2.2 基於CGroup的資源隔離的實現 119
第7章 Storm開發 121
7.1 簡單示例 121
7.2 調試和日誌 122
7.3 Storm Trident 124
7.4 Strom DRPC 128
第8章 基於Storm的實時數據平颱 129
8.1 Hadoop到Storm的代碼遷移經驗 129
8.2 實時用戶畫像 130
8.2.1 簡單實時畫像 130
8.2.2 實時畫像優化 131
8.2.3 實時畫像的毫秒級更新 133
8.3 其他場景畫像 135
8.4 畫像的興趣度模型構建 136
8.5 外部畫像融閤經驗分享 138
8.6 交互式查詢和分析用戶畫像 142
8.7 實時産品和店鋪信息更新 143
第9章 大數據應用案例 145
9.1 實時DAU計算 145
9.2 實時個性化推薦 150
9.2.1 推薦係統介紹 150
9.2.2 實時推薦係統的方法 153
9.2.3 基於Storm的實時推薦係統 156
9.3 廣告投放的精準化 158
9.3.1 點擊率預測 158
9.3.2 搜索引擎營銷 161
9.3.3 精準化營銷與韆人韆麵 161
9.4 實時意圖和搜索 164
9.4.1 用戶意圖預測 165
9.4.2 搜索比價 167
9.4.3 搜索排序 168
第10章 Storm使用經驗和性能優化 171
10.1 使用經驗 171
10.1.1 使用rebalance命令動態調整並發度 171
10.1.2 使用tick消息做定時器 172
10.1.3 使用組件的並行度代替綫程池 174
10.1.4 不要用DRPC批量處理大數據 174
10.1.5 不要在Spout中處理耗時的操作 174
10.1.6 log4j的使用技巧 175
10.1.7 注意fieldsGrouping的數據均衡性 176
10.1.8 優先使用localOrShuffleGrouping 176
10.1.9 設置閤理的MaxSpoutPending值 177
10.1.10 設置閤理的Worker數 177
10.1.11 平衡吞吐量和時效性 178
10.2 性能優化 179
10.2.1 找到Topology的性能瓶頸 179
10.2.2 GC參數優化 181
10.3 性能優化原則 181
附錄A Kafka原理 183
附錄B 將Storm源碼導入Eclipse 191
· · · · · · (
收起)