具體描述
産品特色
內容簡介
《Storm分布式實時計算模式》由Apache Storm 項目核心貢獻者吉奧茲、奧尼爾親筆撰 寫,融閤瞭作者豐富的Storm實戰經驗,通過大量 示例,全麵而係統地講解使用Storm進行分布式實 時計算的核心概念及應用,並針對不同的應用場 景,給齣多種基於Storm的設計模式,為讀者快速 掌握Storms分布式實時計算提供係統實踐指南。
《Storm分布式實時計算模式》分為10章:第l章介紹使用storm建立一 個分布式流式計算應用所涉及的核心概念,包括 storm的數據結構、開發環境的搭建,以及Storm 程序的開發和調試技術等;第2章詳細講解storm 集群環境的安裝和搭建,以及如何將topology部署 到分布式環境中;第3章通過傳感器數據實例詳細 介紹Trident topology;第4章講解如何使用Storm 和Tridentj掛行實時趨勢分析;第5章介紹如何使用 Storm進行圖形分析,將數據持久化存儲在圖形數 據庫中,通過查詢數據來發現其中潛在的聯係;第 6章講解如何在Storm上使用遞歸實現一個典型的人 工智能算法;第7章演示集成Storm和非事務型係統 的復雜性,通過集成Storm和開源探索性分析架構 Druid實現一個可配置的實時係統來分析金融事件。
第8章探討Lambda體係結構的實現方法,講解如何 將批處理機製和實時處理引擎結閤起來構建一個可 糾錯的分析係統;第9章講解如何將Pig腳本轉化為 topology,並且使用Storm-YARN部署topology,從 而將批處理係統轉化為實時係統;第10章介紹如 何在雲服務提供商提供的主機環境下部署和運行 Storm。
內頁插圖
目錄
前言
作者簡介
第1章 分布式單詞計數
1.1 Storm topology的組成部分——stream、spout和bolt
1.1.1 Storm
1.1.2 spout
1.1.3 bolt
1.2 單詞計數topology的數據流
1.2.1 語句生成bolt
1.2.2 語句分割bolt
1.2.3 單詞計割bolt
1.2.4 上報bolt
1.3 實現單詞計數top
1.3.1 配置開發環境
1.3.2 實現Sentence
1.3.3 實現語句分割bolt
1.3.4 實現單詞計割bolt
1.3.5 實現上報bolt
1.3.6 實現單詞計數topo
1.4 Storm的並發機製
1.4.1 WordCountTopology的並發機製
1.4.2 給topology增加woker
1.4.3 配置executor和task
1.5 理解數據流分組
1.6 有保障機製的數據處理
1.6.1 spout的可靠性
1.6.2 bolt的可靠性
1.6.3 可靠的單詞計數
總結
第2章 配置Storm集群
2.1 Storm集群的框架
2.1.1 理解nimbus守護進程
2.1.2 supervisor守護進程的工作方式
2.1.3 Apache ZooKeeper簡介
……
第3章 Trident和傳感器數據
第4章 實時趨勢分析
第5章 實時圖形分析
第6章 人工智能
第7章 整閤Druid進行金融分析
第8章 自然語言處理
第9章 在Hadoop上部署Storm進行廣告分析
第10章 雲環境下的S
前言/序言
目前對信息高時效性、可操作性的需求不斷增長,這要求軟件係統在更少的時間內能處理更多的數據。隨著可連接設備數量不斷增加,以及在眾多行業領域廣泛應用,這種信息需求已無處不在。傳統企業的運營係統被迫處理原先隻有互聯網企業纔會遇到的大規模數據。這種重大轉變正不斷瓦解傳統架構和解決方案,傳統上會將在綫事務處理和離綫分析分割開來。與此同時,人們正在重新勾勒從數據中提取信息的意義和價值。軟件框架和基礎設施也在不斷進化,以適應這種新場景。 具體地說,數據的生成可以看作一連串發生的離散事件,這些事件流會伴隨著不同的數據流、操作和分析,都會由一個通用的軟件框架和基礎設施來處理。 Storm正是最流行的實時流計算框架之一,它提供瞭可容錯分布式計算所要求的基本原語和保障機製,可以滿足大容量關鍵業務應用的需求。它不但是一套技術的整閤,也是一種數據流和控製的機製。很多大公司都將Storm作為大數據處理平颱的核心部分。 嘗試使用本書中介紹的設計模式,你將學到開發、部署、運營數據處理的流程,它具有每天或者每小時處理上億次事務的能力。 本書介紹瞭多種分布式計算相關的主題,包括設計和集成的模式,還介紹瞭這些技術常見的適用領域和具體應用。本書通過實際示例,從最簡單的topology齣發,首先嚮用戶介紹瞭Storm基礎,然後通過更復雜的示例,逐步引入Storm的高級概念、更細緻的部署方案以及運營中需要關注的事項。 主要內容 第1章介紹瞭使用Storm進行分布式流式計算的核心概念。分布式單詞計數這個例子中展示的數據結構、技術和設計模式都是後續進行更復雜計算的基礎。在該章中,我們會對Storm計算架構有一個基本瞭解。還將學會搭建Storm開發環境,瞭解開發和調試Storm應用的技術。 第2章進一步介紹Storm技術架構和安裝部署Storm集群的過程。在該章中,我們會通過配置工具Puppet來自動化安裝和部署一個多節點Storm集群。 第3章主要介紹Trident topology。Trident在Storm基礎之上提供瞭高級抽象,抽象瞭事務處理和狀態管理的細節。該章使用Trident框架處理、聚閤、過濾來自傳感器的數據,以檢測傳染病是否爆發。 第4章介紹使用Storm和Trident進行實時趨勢分析。實時趨勢分析引入瞭在數據流中進行識彆的模式。在該章中,你將會整閤Apache Kafka隊列並且通過實現一個滑動窗口來計算移動平均數。 第5章介紹瞭使用Storm進行基於圖的數據分析,首先將數據持久化到圖形數據庫,再通過查詢數據來發現關係。圖形數據庫將數據按照頂點、邊、屬性的圖形結構進行存儲,聚焦於實體間的關係。在該章中,我們將Strom和一種流行的圖形數據庫Titan進行整閤,使用Twitter作為數據源。 第6章介紹在Storm上使用遞歸實現一個典型的人工智能算法。該章展現瞭Strom的局限性,並檢視設計模式來適應這些局限。通過分布式遠程調用(Distributed Remote Procedure Call, DRPC),你會實現一個提供同步查詢服務的Storm topology,用來決定井字棋遊戲下一步怎樣走最好。 第7章演示整閤Storm和非事務型係統的復雜性。為瞭支持這種整閤,介紹一種通過ZooKeeper進行分布式狀態管理的設計模式。該章通過整閤Strom和開源探索性分析架構Druid,實現一個可配置的實時係統來分析金融事件。 第8章介紹Lambda係統架構的概念,結閤實時係統和批處理來構建一個可糾錯的分析係統。在第7章的基礎上,你將會融入Hadoop的基礎設施並且檢視如何使用一個MapReduce job對Druid中可能齣現的主機故障事件進行糾錯。 第9章演示將一個Hadoop上運行的Pig語言編寫的批處理job轉化為一個實時的Storm topology。你可以利用Storm-YARN來實現這個功能,這個工具可以使用戶使用YARN來部署和運行Storm集群。在Hadoop上運行Storm係統,企業可以在同一套基礎設施上同時運行與利用實時和批處理係統。 第10章提供瞭在雲環境下運行和部署Storm係統的最佳實踐。詳細地說,你可利用一套為雲計算服務的庫Apache Whirr,在Amazon Web Services(AWS)Elastic Compute Cloud(EC2)上部署和配置Storm及其相關的支撐組件。此外,你還可以利用Vagrant工具在虛擬機環境下建立開發和測試的集群環境。 ……
《海量數據吞吐與低延遲:分布式實時計算的架構藍圖》 在信息爆炸的時代,實時洞察力已成為企業在激烈競爭中脫穎而齣的關鍵。從金融市場的秒級交易決策,到社交媒體上的即時用戶行為分析,再到工業物聯網的設備狀態實時監控,以及智能交通係統的動態流量調度,對海量數據的實時處理能力的需求正以前所未有的速度增長。這要求我們構建能夠以極低延遲、高吞吐量處理數據的分布式係統。然而,設計和實現這樣的係統絕非易事,它涉及復雜的並發控製、容錯機製、數據一緻性保證、資源管理以及網絡通信等諸多挑戰。 本書旨在深入剖析分布式實時計算係統的核心理念、關鍵技術與高級模式,為構建健壯、可擴展且高性能的實時數據處理平颱提供一套係統性的指導。我們不拘泥於任何特定的技術棧,而是著眼於通用的設計原則和架構思路,讓讀者能夠理解其背後的邏輯,並能靈活應用於不同的技術環境中。 第一部分:分布式實時計算的基石 在深入探討具體模式之前,理解分布式實時計算的底層原理至關重要。本部分將從概念入手,梳理其核心要素。 實時計算的定義與挑戰: 我們將精確定義“實時”的含義,並分析其與批量處理、近實時處理的區彆。在此基礎上,我們將深入剖析構建實時係統麵臨的主要挑戰,包括但不限於: 數據時效性: 如何在最短的時間內響應數據變化,避免信息滯後。 吞吐量與延遲: 如何在高並發場景下保證數據處理的速率,同時將響應時間降至最低。 可擴展性: 如何隨著數據量的增長,平滑地增加係統處理能力。 容錯性與可用性: 如何在部分節點故障時,保證係統的持續運行和數據的完整性。 狀態管理: 如何在分布式環境中高效、一緻地管理和更新計算過程中的狀態信息。 數據一緻性: 在多副本、分布式環境下,如何保證數據的一緻性,特彆是在需要精確計算的場景下。 資源管理與調度: 如何高效地分配和利用計算、存儲、網絡資源,以滿足實時計算的需求。 分布式係統的基本概念迴顧: 盡管本書聚焦於實時計算,但理解分布式係統的基礎仍是必不可少的。我們將簡要迴顧與實時計算密切相關的分布式係統概念,如: CAP 定理: 理解一緻性、可用性、分區容忍性之間的權衡,以及它對實時係統設計的指導意義。 分布式一緻性協議(如 Paxos, Raft 的原理): 瞭解這些協議如何保證分布式狀態的一緻性,以及在實時場景下的適用性與局限性。 消息隊列與流處理: 深入探討消息隊列在解耦、緩衝、異步通信中的作用,以及流處理模型如何為實時數據加工奠定基礎。 第二部分:核心處理模式與架構設計 本部分將聚焦於構建分布式實時計算係統的關鍵處理模式和架構設計理念。這些模式是解決上述挑戰的核心工具。 數據攝入與緩衝: 高吞吐量數據接入: 探討如何設計能夠處理海量數據輸入的接入層,包括負載均衡、數據分片、序列化協議選擇等。 緩衝與削峰填榖: 分析消息隊列(如 Kafka, Pulsar)在緩衝突發流量、削減下遊壓力方麵的關鍵作用,以及如何根據業務需求選擇閤適的隊列類型和配置。 數據預處理與驗證: 在數據進入核心處理流程前,進行必要的清洗、格式轉換和初步驗證,以保證後續處理的效率和準確性。 流式計算模型: 無界流與有界流: 理解這兩種流的特性,以及它們在實時計算中的不同應用場景。 事件驅動與微批處理: 深入分析事件驅動模型如何實現真正的實時響應,以及微批處理模型如何平衡延遲與吞吐量。 窗口操作: 詳細介紹各種窗口類型(如固定窗口、滑動窗口、會話窗口)及其應用,以及如何在分布式環境下高效地實現窗口計算。 狀態管理與容錯: 探討在流式計算中如何管理和持久化算子狀態,以及如何利用 Checkpointing、Failure Recovery 等機製實現容錯。 分布式數據處理架構: 拓撲結構設計: 介紹構建分布式實時處理拓撲的基本元素(Spout/Source, Bolt/Processor, Sink/Output),以及如何設計閤理的拓撲結構以滿足業務邏輯。 數據流管理與路由: 分析如何有效地管理數據在拓撲中的流動,包括數據分發策略(如輪詢、按鍵分片)、數據過濾與路由。 並行度與任務調度: 探討如何根據計算需求和集群資源動態調整算子並行度,以及分布式任務調度器在資源分配與任務執行中的作用。 亞秒級延遲優化: 針對對延遲極緻追求的場景,我們將深入研究諸如內存計算、異步I/O、進程內通信、零拷貝傳輸等技術,以及如何通過精細化的參數調優來逼近亞秒級甚至毫秒級的處理能力。 第三部分:高級模式與應用場景 在掌握瞭基礎的處理模式後,我們將進一步探索更高級的模式,以應對復雜多變的實時計算需求,並結閤實際應用場景進行闡述。 復雜事件處理(CEP): 模式匹配: 介紹 CEP 的核心——如何識彆和響應數據流中特定事件序列或模式的齣現。 狀態機的應用: 探討如何利用狀態機來建模和處理復雜的事件模式。 實時告警與決策: CEP 在實時欺詐檢測、異常監控、金融風控等領域的應用。 實時聚閤與分析: 近似計算與概率數據結構: 在數據量巨大且對精確度要求不那麼嚴苛的場景下,介紹如 HyperLogLog, Bloom Filter, Count-Min Sketch 等概率數據結構在實時去重、計數、成員檢測等方麵的應用,以降低內存和計算開銷。 增量計算與流式物化視圖: 如何在數據流上維護聚閤結果的實時更新,構建實時的統計報錶或儀錶盤。 實時推薦係統: 分析如何利用用戶實時行為流來更新推薦模型或生成實時推薦列錶。 圖計算在實時場景中的應用: 實時圖分析: 探討如何處理不斷變化的圖數據,例如社交網絡中的關係變化、知識圖譜的動態更新。 實時路徑查找與連通性分析: 在實時通信網絡、物流調度等場景下,進行實時的圖遍曆和分析。 容錯與高可用性深度解析: 精確一次(Exactly-Once)語義的實現: 深入探討如何在分布式流處理係統中實現精確一次處理語義,以防止數據丟失或重復。 無狀態與有狀態算子的容錯策略: 分彆討論如何處理無狀態和有狀態算子在故障恢復時的不同策略。 主動-被動與主動-主動高可用模式: 分析在係統層麵如何實現高可用,確保服務不中斷。 性能調優與監控: 瓶頸識彆與定位: 介紹如何利用分布式追蹤、日誌分析、指標監控等手段,快速定位係統的性能瓶頸。 JVM 調優與內存管理: 對於基於 JVM 的流處理係統,深入講解內存管理、垃圾迴收(GC)等方麵的調優技巧。 網絡 I/O 優化: 探討如何減少網絡傳輸開銷,提升數據傳輸效率。 分布式係統的監控體係: 構建一套完善的監控體係,涵蓋數據吞吐量、延遲、錯誤率、資源利用率等關鍵指標。 第四部分:實踐落地與未來展望 本部分將迴歸實踐,討論如何將前麵介紹的模式應用於實際業務場景,並對未來分布式實時計算的發展趨勢進行展望。 典型應用場景剖析: 金融交易與風控: 實時欺詐檢測、高頻交易分析、市場風險監控。 物聯網(IoT)數據處理: 工業設備監控、智能傢居數據分析、車聯網信息處理。 實時推薦與個性化營銷: 用戶行為分析、實時內容推薦、動態廣告投放。 實時日誌分析與安全監控: 應用日誌實時告警、安全事件溯源。 社交媒體分析: 輿情監控、用戶情緒分析、熱點話題追蹤。 技術選型與生態係統: 主流流處理框架對比分析(原理層麵): 簡要介紹不同框架(如 Storm, Flink, Spark Streaming)的核心設計理念和適用場景,幫助讀者理解它們的設計哲學。 消息隊列的選型: Kafka, Pulsar, RabbitMQ 等在實時數據傳輸中的作用和特點。 存儲層選擇: 適用實時計算場景的數據庫和存儲解決方案(如 NoSQL, time-series database, distributed file systems)。 構建可維護的實時數據平颱: 開發流程與最佳實踐: 強調模塊化設計、代碼復用、自動化測試在實時係統開發中的重要性。 持續集成/持續部署(CI/CD)在實時係統中的應用。 數據治理與質量保障: 如何在實時數據管道中保證數據的準確性和一緻性。 未來趨勢展望: AI 與實時計算的融閤: 實時機器學習、在綫模型更新。 邊緣計算與實時處理: 將實時計算能力推嚮數據源頭。 Serverless 實時計算: 進一步降低運維復雜度。 更強大的狀態管理能力與更優的容錯機製。 通過對這些核心理念、處理模式、高級架構以及應用場景的深入剖析,本書將幫助讀者構建起對分布式實時計算的全麵、深刻的理解,並能夠獨立設計、實現和優化麵嚮未來的實時數據處理係統,從而在瞬息萬變的數字世界中搶占先機。