您好,登錄后才能下訂單哦!
Storm是什么:
如果只用一句話來描述storm的話,可能會是這樣:分布式實時計算系統。按照storm作者的說法,storm對于實時計算的意義類似于hadoop對于批處理的意義。我們都知道,根據google mapreduce來實現的hadoop為我們提供了map, reduce原語,使我們的批處理程序變得非常地簡單和優美。對比Hadoop的批處理,Storm是個實時的、分布式以及具備高容錯的計算系統。同Hadoop一樣Storm也可以處理大批量的數據,然而Storm在保證高可靠性的前提下還可以讓處理進行的更加實時;也就是說,所有的信息都會被處理。Storm可以擴展到不同的機器上進行大批量的數據處理,他同樣還有其他一些特性。
Storm的架構:
Storm的集群由一個主節點和多個工作節點組成。主節點運行了一個名為“nimbus”的守護進程,用于分配代碼、布置任務及故障檢測。每個工作節點都運行了一個名為“supervisor”的守護進程,用于監聽工作,開始并終止工作進程。Nimbus和Supervisor都能快速失敗,而且是無狀態的,這樣一來他們都變得十分健壯,兩者的協調工作是由Zookeeper來完成的。Zookeeper用于管理集群中的不同組件。ZeroMQ是內部消息系統,JZMQ是ZeroMQ的Java Binding。有個名為storm-deploy的子項目,可以在AWS上一鍵部署Storm集群。
Storm優勢:
a.簡單的編程模型。類似于MapReduce降低了并行批處理復雜性,Storm降低了進行實時處理的復雜性。
b.服務化,一個服務框架,支持熱部署,即時上線或下線App。
c.可以使用各種編程語言。你可以在Storm之上使用各種編程語言。默認支持Clojure、Java、Ruby和Python。要增加對其他語言的支持,只需要實現一個簡單的Storm通信協議即可。
d.容錯性。Storm會管理工作進程和節點故障。
e.水平擴展。計算是在多個線程、進程和服務器之間并行進行的。
f.可靠的消息處理。Storm保證每個消息至少能得到一次完整處理。任務失敗時,它會從消息源重試消息。
g.快速。系統的設計保證了消息能得到快速的處理,使用ZeroMQ作為其底層的消息隊列。
h.本地模式。Storm有一個“本地模式”,可以在處理過程中完全模擬Storm集群。這讓你可以快速進行開發和單元測試。
Storm存在的問題:
a、目前的開源版本中只是單節點nimbus,掛掉只能自動重啟,可以考慮實現一個雙nimbus的布局。
b、Clojure是一個在JVM平臺運行的動態函數式編程語言,優勢在于流程計算,Storm的部分核心內容由Clojure編寫,雖然性能上提高不少但同時也提升了維護成本。
storm的適用場景:
流數據處理。Storm可以用來處理源源不斷流進來的消息,處理之后將結果寫入到某個存儲中去。
分布式rpc。由于storm的處理組件是分布式的,而且處理延遲極低,所以可以作為一個通用的分布式rpc框架來使用。當然,其實我們的搜索引擎本身也是一個分布式rpc系統。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。