Storm記錄02-- Storm是什麼

  1. Storm是什麼:

    如果只用一句話來描述storm的話,可能會是這樣:分佈式實時計算系統。按照storm作者的說法,storm對於實時計算的意義類似於hadoop對於批處理的意義。我們都知道,根據google mapreduce來實現的hadoop爲我們提供了map, reduce原語,使我們的批處理程序變得非常地簡單和優美。對比Hadoop的批處理,Storm是個實時的、分佈式以及具備高容錯的計算系統。同Hadoop一樣Storm也可以處理大批量的數據,然而Storm在保證高可靠性的前提下還可以讓處理進行的更加實時;也就是說,所有的信息都會被處理。Storm可以擴展到不同的機器上進行大批量的數據處理,他同樣還有其他一些特性。

  2. Storm的架構:

    Storm的集羣由一個主節點和多個工作節點組成。主節點運行了一個名爲“nimbus”的守護進程,用於分配代碼、佈置任務及故障檢測。每個工作節點都運行了一個名爲“supervisor”的守護進程,用於監聽工作,開始並終止工作進程。Nimbus和Supervisor都能快速失敗,而且是無狀態的,這樣一來他們都變得十分健壯,兩者的協調工作是由Zookeeper來完成的。Zookeeper用於管理集羣中的不同組件。ZeroMQ是內部消息系統,JZMQ是ZeroMQ的Java Binding。有個名爲storm-deploy的子項目,可以在AWS上一鍵部署Storm集羣。

  3. Storm優勢:

    a.簡單的編程模型。類似於MapReduce降低了並行批處理複雜性,Storm降低了進行實時處理的複雜性。

    b.服務化,一個服務框架,支持熱部署,即時上線或下線App。

    c.可以使用各種編程語言。你可以在Storm之上使用各種編程語言。默認支持Clojure、Java、Ruby和Python。要增加對其他語言的支持,只需要實現一個簡單的Storm通信協議即可。

    d.容錯性。Storm會管理工作進程和節點故障。

    e.水平擴展。計算是在多個線程、進程和服務器之間並行進行的。

    f.可靠的消息處理。Storm保證每個消息至少能得到一次完整處理。任務失敗時,它會從消息源重試消息。

    g.快速。系統的設計保證了消息能得到快速的處理,使用ZeroMQ作爲其底層的消息隊列。

    h.本地模式。Storm有一個“本地模式”,可以在處理過程中完全模擬Storm集羣。這讓你可以快速進行開發和單元測試。

  4. Storm存在的問題:

    a、目前的開源版本中只是單節點nimbus,掛掉只能自動重啓,可以考慮實現一個雙nimbus的佈局。

    b、Clojure是一個在JVM平臺運行的動態函數式編程語言,優勢在於流程計算,Storm的部分核心內容由Clojure編寫,雖然性能上提高不少但同時也提升了維護成本。

  5. storm的適用場景:

    流數據處理。Storm可以用來處理源源不斷流進來的消息,處理之後將結果寫入到某個存儲中去。

    分佈式rpc。由於storm的處理組件是分佈式的,而且處理延遲極低,所以可以作爲一個通用的分佈式rpc框架來使用。當然,其實我們的搜索引擎本身也是一個分佈式rpc系統。


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