[Bdata] Twitter Storm:開源實時流計算

Twitter將Storm正式開源了,這是一個分佈式的、容錯的實時計算系統,它被託管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType開發的實時處理系統,BackType如今已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure寫的。php

Storm爲分佈式實時計算提供了一組通用原語,可被用於「流處理」之中,實時處理消息並更新數據庫。這是管理隊列及工做者集羣的另外一種方式。 Storm也可被用於「連續計算」(continuous computation),對數據流作連續查詢,在計算時就將結果以流的形式輸出給用戶。它還可被用於「分佈式RPC」,以並行的方式運行昂貴的運算。 Storm的主工程師Nathan Marz表示:node

Storm能夠方便地在一個計算機集羣中編寫與擴展複雜的實時計算,Storm之於實時處理,就比如Hadoop之於批處理。Storm保證每一個消息都會獲得處理,並且它很快——在一個小集羣中,每秒能夠處理數以百萬計的消息。更棒的是你可使用任意編程語言來作開發。

Storm的主要特色以下:git

  1. 簡單的編程模型。相似於MapReduce下降了並行批處理複雜性,Storm下降了進行實時處理的複雜性。
  2. 可使用各類編程語言。你能夠在Storm之上使用各類編程語言。默認支持Clojure、Java、Ruby和Python。要增長對其餘語言的支持,只需實現一個簡單的Storm通訊協議便可。
  3. 容錯性。Storm會管理工做進程和節點的故障。
  4. 水平擴展。計算是在多個線程、進程和服務器之間並行進行的。
  5. 可靠的消息處理。Storm保證每一個消息至少能獲得一次完整處理。任務失敗時,它會負責從消息源重試消息。
  6. 快速。系統的設計保證了消息能獲得快速的處理,使用ØMQ做爲其底層消息隊列。
  7. 本地模式。Storm有一個「本地模式」,能夠在處理過程當中徹底模擬Storm集羣。這讓你能夠快速進行開發和單元測試。

Storm集羣由一個主節點和多個工做節點組成。主節點運行了一個名爲「Nimbus」的守護進程,用於分配代碼、佈置任務及故障檢測。每一個工做節 點都運行了一個名爲「Supervisor」的守護進程,用於監聽工做,開始並終止工做進程。Nimbus和Supervisor都能快速失敗,並且是無 狀態的,這樣一來它們就變得十分健壯,二者的協調工做是由Apache ZooKeeper來完成的。github

Storm的術語包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被處理的數據。Sprout是數據源。Bolt處理數據。Task是運行於Spout或Bolt中的 線程。Worker是運行這些線程的進程。Stream Grouping規定了Bolt接收什麼東西做爲輸入數據。數據能夠隨機分配(術語爲Shuffle),或者根據字段值分配(術語爲Fields),或者 廣播(術語爲All),或者老是發給一個Task(術語爲Global),也能夠不關心該數據(術語爲None),或者由自定義邏輯來決定(術語爲 Direct)。Topology是由Stream Grouping鏈接起來的Spout和Bolt節點網絡。在Storm Concepts頁面裏對這些術語有更詳細的描述。數據庫

能夠和Storm相提並論的系統有EsperStreambaseHStreamingYahoo S4。其中和Storm最接近的就是S4。二者最大的區別在於Storm會保證消息獲得處理。這些系統中有的擁有內建數據存儲層,這是Storm所沒有的,若是須要持久化,可使用一個相似於Cassandra或Riak這樣的外部數據庫。apache

入門的最佳途徑是閱讀GitHub上的官方《Storm Tutorial》。 其中討論了多種Storm概念和抽象,提供了範例代碼以便你能夠運行一個Storm Topology。開發過程當中,能夠用本地模式來運行Storm,這樣就能在本地開發,在進程中測試Topology。一切就緒後,以遠程模式運行 Storm,提交用於在集羣中運行的Topology。Maven用戶可使用clojars.org提供的Storm依賴,地址是 http://clojars.org/repo。編程

要運行Storm集羣,你須要Apache ZookeeperØMQJZMQ、Java 6和Python 2.6.6。ZooKeeper用於管理集羣中的不一樣組件,ØMQ是內部消息系統,JZMQ是ØMQ的Java Binding。有個名爲storm-deploy的子項目,能夠在AWS上一鍵部署Storm集羣。關於詳細的步驟,能夠閱讀Storm Wiki上的《Setting up a Storm cluster》服務器

欲瞭解Storm的更多信息,請訪問官方Storm Wiki。你也能夠加入Storm郵件列表和freenode上的Storm IRC(#storm-user)。網絡

做者 Bienvenido David IIIsession

查看英文原文:Twitter Storm: Open Source Real-time Hadoop

相關文章
相關標籤/搜索