《Storm企業級套用:實戰、運維和調優》是機械工業出版社出版的圖書,作者是馬延輝、陳書美、雷葆華。
基本介紹
- 中文名:Storm企業級套用:實戰、運維和調優
- 作者:馬延輝、陳書美、雷葆華
- 出版社:機械工業出版社
- ISBN:9787111503385
內容簡介,圖書目錄,
內容簡介
這是一本真正能讓讀者通過真實的企業套用實踐掌握如何套用Storm處理各種大數據業務的著作。作者是國內頂尖的大數據專家,深諳初學者的難處和企業的實際需求,在此基礎上巧妙地安排和組織了本書的內容,旨在讓讀者能達到事半功倍的效果。
本書沒有過於繁瑣和高深的理論,先系統介紹了Storm的設計思想、核心組件和適用場景,生產環境的搭建和部署,以及核心概念和數據模型;然後通過實時語音處理、網路流量分析、實時路況分析、數據質量實時監控、交通路況監控、廣告實時流量統計等6典型的企業級案例講解了如何套用Storm處理各種類型的大數據業務,每個案例都包括背景介紹、系統架構、模組設計和邏輯實現等組成部分,講解十分詳盡;最後從運維角度總結了Storm在安裝部署、啟動、運行等環節可能會出現的各種故障並給出了解決方案,以及Storm的各種技巧和最佳實踐。
圖書目錄
- Storm企業級套用:實戰、運維和調優
- 前言
- 為什麼寫作本書
- 讀者對象
- 如何閱讀本書
- 勘誤和支持
- 致謝
- 基礎篇
- 第1章 認識Storm
- 1.1 什麼是實時流計算
- 1.1.1 實時流計算背景
- 1.1.2 實時計算套用場景
- 1.1.3 實時計算處理流程
- 1.1.4 實時計算框架
- 1.2 Storm是什麼
- 1.2.1 Storm出現的背景
- 1.2.2 Storm簡介
- 1.2.3 Storm的設計思想
- 1.2.4 Storm與Hadoop的角色和組件比較
- 1.3 Storm核心組件
- 1.3.1 主節點Nimbus
- 1.3.2 工作節點Supervisor
- 1.3.3 協調服務組件ZooKeeper
- 1.3.4 其他核心組件
- 1.4 Storm的特性
- 1.5 Storm的功能
- 1.6 本章小結
- 第2章 開始使用Storm
- 2.1 環境準備
- 2.1.1 系統配置
- 2.1.2 安裝ZooKeeper集群
- 2.2 啟動模式
- 2.2.1 本地模式
- 2.2.2 分散式模式
- 2.3 安裝部署Storm集群
- 2.3.1 安裝Storm依賴庫
- 2.3.2 安裝Storm集群
- 2.3.3 啟動Storm集群
- 2.3.4 停止Storm集群
- 2.4 創建Topology並向集群提交任務
- 2.4.1 創建Topology
- 2.4.2 向集群提交任務
- 2.5 本章小結
- 第3章 核心概念和數據流模型
- 3.1 Tuple元組
- 3.1.1 Tuple描述
- 3.1.2 Tuple的生命周期
- 3.2 Spout數據源
- 3.2.1 Spout介紹
- 3.2.2 Spout實例
- 3.3 Bolt訊息處理者
- 3.3.1 Bolt介紹
- 3.3.2 Bolt實例
- 3.4 Topology拓撲
- 3.4.1 Topology實例
- 3.4.2 Topology運行
- 3.5 Stream訊息流和Stream Grouping訊息流組
- 3.5.1 Stream訊息流
- 3.5.2 Stream Grouping訊息流組
- 3.6 Task任務
- 3.7 Worker工作者進程
- 3.8 Worker、Task、Executor三者之間的關係
- 3.9 事務
- 3.10 數據流模型
- 3.10.1 數據流模型簡介
- 3.10.2 Storm數據流模型
- 3.11 本章小結
- 實戰篇
- 第4章 實例1:移動互聯——語音“實時牆”
- 4.1 業務背景
- 4.1.1 案例背景
- 4.1.2 設計目標
- 4.1.3 數據格式
- 4.1.4 硬體配置
- 4.2 系統架構與模組設計
- 4.2.1 整體架構
- 4.2.2 數據採集
- 4.2.3 數據實時處理
- 4.2.4 存儲設計
- 4.2.5 Web實時展示
- 4.2.6 硬體部署圖
- 4.3 核心模組實現
- 4.3.1 實時處理業務邏輯實現
- 4.3.2 Web展示實現
- 4.3.3 最終效果呈現
- 4.4 本章小結
- 第5章 實例2:運營商——網路流量流向實時分析
- 5.1 業務背景
- 5.1.1 案例背景
- 5.1.2 設計目標
- 5.1.3 數據規模預估
- 5.1.4 數據格式
- 5.1.5 統計分析需求
- 5.2 系統架構與模組設計
- 5.2.1 整體架構
- 5.2.2 數據源
- 5.2.3 日誌採集
- 5.2.4 數據存儲
- 5.2.5 數據處理
- 5.2.6 目標存儲和擴展服務
- 5.2.7 結果Web展示
- 5.3 核心模組實現
- 5.3.1 模擬數據實現
- 5.3.2 日誌採集和存儲實現
- 5.3.3 數據處理實現
- 5.3.4 Web展示實現
- 5.4 本章小結
- 第6章 實例3:交通——基於GPS的實時路況分析
- 6.1 業務背景
- 6.1.1 案例背景
- 6.1.2 設計目標
- 6.1.3 數據格式
- 6.1.4 實時路況分析方法
- 6.2 系統架構和模組設計
- 6.3 核心模組的實現
- 6.3.1 安裝Kafka集群
- 6.3.2 Flume整合Kafka
- 6.3.3 實時處理數據
- 6.3.4 Web頁面展示
- 6.4 本章小結
- 第7章 實例4:網際網路——數據質量實時監控
- 7.1 業務背景
- 7.1.1 案例背景
- 7.1.2 設計目標
- 7.1.3 數據格式
- 7.2 系統架構與模組設計
- 7.2.1 整體架構
- 7.2.2 結果Web展示
- 7.3 核心模組實現
- 7.3.1 模擬數據
- 7.3.2 實時處理業務邏輯的實現
- 7.3.3 Web界面實現
- 7.3.4 最終效果圖
- 7.4 本章小結
- 第8章 實例5:交通——超速頻發路段監控
- 8.1 業務背景
- 8.1.1 案例背景
- 8.1.2 數據類型
- 8.2 系統架構和模組設計
- 8.3 核心模組實現
- 8.3.1 實現入口類Main
- 8.3.2 數據源SocketSpout的實現
- 8.3.3 實時處理MapSearchBolt和SpeedProcessBolt的實現
- 8.3.4 目標存儲DataBaseLoadBolt的實現
- 8.4 本章小結
- 第9章 實例6:網際網路——廣告實時流量統計
- 9.1 廣告實時流量統計系統架構
- 9.1.1 廣告數據
- 9.1.2 詳細需求描述
- 9.1.3 系統架構
- 9.2 表結構與模組設計
- 9.2.1 表結構設計
- 9.2.2 功能模組設計
- 9.3 核心模組實現
- 9.3.1 部署物理集群環境
- 9.3.2 Kafka生產者邏輯的實現
- 9.3.3 使用Storm-kafka實現業務邏輯
- 9.3.4 使用HBase存儲並實現統計
- 9.4 本章小結
- 技巧篇
- 第10章 Storm常見故障及解決方法
- 10.1 安裝部署故障
- 10.1.1 “no jzmq in java.library.path”異常
- 10.1.2 “No rule to make target”異常
- 10.1.3 “cannot access org.zeromq.ZMQ”異常
- 10.1.4 缺少pkg-config異常
- 10.1.5 “java.lang.UnsatisfiedLinkError”異常
- 10.1.6 “java.lang.NoClassDefFoundError:clojure.core.protocols$”異常
- 10.1.7 “Error:cannot link with-luuid,install uuid-dev”異常
- 10.1.8 “bad interpreter:No such file or directory”異常
- 10.1.9 “org.zeromq.ZMQException:Invalid argument”異常
- 10.2 啟動故障
- 10.2.1 “java.io.FileNotFoundException”異常
- 10.2.2 “java.io.EOFException”異常
- 10.3 運行時故障
- 10.3.1 “Nimbus host is not set”異常
- 10.3.2 “AlreadyAliveException(msg:xxx is alreadyactive)”異常
- 10.3.3 無法序列化log4j.Logger異常
- 10.3.4 “Failing message”異常
- 10.3.5 “java.io.NotSerializableException”異常
- 10.3.6 “java.lang.NoClassDefFoundError”異常
- 10.3.7 “java.net.NoRouteToHostException”異常
- 10.3.8 “java.net.UnknownHostException”異常
- 10.3.9 重複defaults.yaml資源檔案異常
- 10.3.10 “KeeperException$NoNodeException”異常
- 10.3.11 “A fatal error has been detected by the Java Runtime Environment”錯誤
- 10.3.12 “java.lang.ArrayIndexOutOfBoundsException”異常
- 10.3.13 DRPC空指針異常
- 10.3.14 Storm Thrift讀取數據報錯
- 10.4 本章小結
- 第11章 Storm使用技巧和最佳實踐
- 11.1 核心組件使用要點
- 11.1.1 Spout和Bolt
- 11.1.2 ZooKeeper集群儘量獨立
- 11.1.3 Thrift服務的套用場景
- 11.1.4 序列化機制的使用場景
- 11.2 集群配置技巧
- 11.2.1 默認參數配置
- 11.2.2 日誌信息
- 11.2.3 合理配置JVM參數
- 11.3 集群運維技巧
- 11.3.1 Storm計算結果的存儲位置
- 11.3.2 Storm集群動態增刪節點
- 11.3.3 關閉Storm相關進程
- 11.3.4 Storm UI顯示內容的問題
- 11.4 項目開發技巧
- 11.4.1 使用assembly外掛程式打包
- 11.4.2 依賴JAR衝突
- 11.5 保證訊息的可靠處理
- 11.5.1 訊息失敗後的處理
- 11.5.2 主動干預可靠性
- 11.5.3 處理重複的Tuple
- 11.6 理解DRPC原語
- 11.6.1 DRPC工作流
- 11.6.2 LinearDRPCTopologyBuilder實現類
- 11.6.3 DRPC的兩種模式
- 11.7 快速理解一致性事務
- 11.7.1 Trident框架的使用
- 11.7.2 Trident框架的細節
- 11.7.3 事務性Spout
- 11.7.4 狀態State
- 11.8 本章小結