基於storm的實時框架

核心的實時架構和基於storm的實時架構的設計.

一、實時的框架簡介

背景

數據流計算來自於一個信念:數據的價值隨着時間的流逝而降低,所以事件出現後必須儘快地對它們進行處理,最好數據出現時便立刻對其進行處理,發生一個事件進行一次處理,而不是緩存起來成一批處理。

核心架構

互聯網上海量數據(一般爲日誌流)的實時計算過程可以被劃分爲以下三個階段:數據的產生與收集階段、傳輸與分析處理階段、存儲對對外提供服務階段。

      

                                                                     

數據採集(流數據輸入)

        主要是爲實時框架提供輸入實時的數據流,秒級別的數據並傳入實時框架。目前,互聯網企業的海量數據採集工具,有Facebook開源的Scribe、LinkedIn開源的Kafka、Cloudera開源的Flume,淘寶開源的TimeTunnel、Hadoop的Chukwa等,均可以滿足每秒數百MB的日誌數據採集和傳輸需求。

典型實時流計算框架(流數據計算)

        目前業界誕生了許多系統,它們仿照MapReduce約束編程模型的方式,爲了獲取更好的執行效率,這些系統包括,微軟的DAG任務計算模型Dryad、Google的圖批量同步處理系統Pregel和增量式計算框架Percolator,Yahoo!的數據流計算系統S4、NYU的共享內存處理系統Piccolo以及Berkeley的交互式實時處理系統Spark等等。

  • Twitter Storm
  • Yahoo S4
  • Facebook Puma
  • Puma、Storm和S4三種數據流計算系統對比
    典型的三個數據流計算系統Puma、Storm和S4,它們分別適用於站點統計、社交網絡和廣告投放等應用:
           

     上圖從開發語言、高可用機制、支持精確恢復、主從架構、資源利用率、恢復時間、支持狀態持久化及支持去重等幾個方面對這三種系統進行了對比。可以看到,爲了高效開發,兩個系統使用Java,另一種系統使用函數式編程語言Clojure;高可用方案,有兩個系統使用Passive Standby方式,系統恢復時間可控,但系統複雜度增加,資源使用率也較低,因爲需要一些機器用來當備機;而Storm選擇了更簡單可行的上游回放方式,資源使用率高,就是恢復時間可能稍長些;Puma和S4都支持狀態持久化,但S4目前不支持數據去重,未來可能會實現;三個系統都做不到精確恢復,即恢復後的執行結果和無故障發生時保持一致,因爲即使是Passive Standby方式,也只是定期Checkpoint,並沒有跟蹤每條消息的執行。商用的StreamBase支持精確恢復,這主要應用於金融領域。

國內外一起企業的應用情況

  • 淘寶的實時計算、流式處理
    1. 銀河流數據處理平臺:通用的流數據實時計算系統,以實時數據產出的低延遲、高吞吐和複用性爲初衷和目標,採用actor模型構建分佈式流數據計算框架(底層基於akka),功能易擴展、部分容錯、數據和狀態可監控。 銀河具有處理實時流數據(如TimeTunnel收集的實時數據)和靜態數據(如本地文件、HDFS文件)的能力,能夠提供靈活的實時數據輸出,並提供自定義的數據輸出接口以便擴展實時計算能力。 銀河目前主要是爲魔方提供實時的交易、瀏覽和搜索日誌等數據的實時計算和分析。
    2. 基於storm的流式處理,統計計算、持續計算、實時消息處理。
    3. 利用HBase實現的online應用。

實時查詢(流數據查詢、展示結果)

全內存: 直接提供數據讀取服務,定期dump到磁盤或數據庫進行持久化。
半內存: 使用Redis、Memcache、MongoDB、BerkeleyDB等內存數據庫提供數據實時查詢服務,由這些系統進行持久化操作。
全磁盤: 使用HBase等以分佈式文件系統(HDFS)爲基礎的NoSQL數據庫,對於key-value引擎,關鍵是設計好key的分佈*.*

二,基於storm的實時計算框架

基本架構 

數據輸入:採用zeromMQ進行傳輸,zeroMQ內部做負載均衡

數據處理:採用storm的spout讀取zeroMQ傳來的數據,bolt進行邏輯的處理

數據結果查詢與展現: 最終所有的log都存儲在HDFS上,邏輯運行的過程中,處理的時間和處理log的數據被保存到mysql中,

     實時的log存儲在redis中,供用戶查詢


參考資料

http://wiki.d.xiaonei.com/pages/viewpage.action?pageId=18154309

實時計算一些基本概念
http://www.cnblogs.com/panfeng412/archive/2011/10/28/2227195.html
Beyond MapReduce:談2011年風靡的數據流計算系統
http://www.programmer.com.cn/9642/
對互聯網海量數據實時計算的理解
http://www.cnblogs.com/panfeng412/archive/2011/10/28/realtime-computing-of-big-data.html
淘寶實時流計算
http://www.cnblogs.com/panfeng412/tag/%E5%AE%9E%E6%97%B6%E6%B5%81%E8%AE%A1%E7%AE%97/
Yahoo! s4和Twitter storm的粗略比較
http://www.blogjava.net/killme2008/archive/2011/11/08/363238.html
Cloudera Announces Game-Changing, Real-Time Query on Hadoop and Leads a New Era of Data Management
http://www.msnbc.msn.com/id/49533097/ns/business-press_releases/t/cloudera-announces-game-changing-real-time-query-hadoop-leads-new-era-data-management/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章