Hadoop:分布式批處理計算,強調批處理,常用于數據挖掘、分析
二、 優點
1. 簡單編程
在大數據處理方面相信大家對hadoop已經耳熟能詳,基于Google Map/Reduce來實現的Hadoop為開發者提供了map、reduce原語,使并行批處理程序變得非常地簡單和優美。同樣,Storm也為大數據的實時計算提供了一些簡單優美的原語,這大大降低了開發并行實時處理的任務的復雜性,幫助你快速、高效的開發應用。
2. 多語言支持
除 了用java實現spout和bolt,你還可以使用任何你熟悉的編程語言來完成這項工作,這一切得益于Storm所謂的多語言協議。多語言協議是 Storm內部的一種特殊協議,允許spout或者bolt使用標準輸入和標準輸出來進行消息傳遞,傳遞的消息為單行文本或者是json編碼的多行。
Storm支持多語言編程主要是通過ShellBolt, ShellSpout和ShellProcess這些類來實現的,這些類都實現了IBolt 和 ISpout接口,以及讓shell通過java的ProcessBuilder類來執行腳本或者程序的協議。
可以看到,采用這種方式,每個tuple在處理的時候都需要進行json的編解碼,因此在吞吐量上會有較大影響
3. 支持水平擴展
在 Storm集群中真正運行topology的主要有三個實體:工作進程、線程和任務。Storm集群中的每臺機器上都可以運行多個工作進程,每個工作進程 又可創建多個線程,每個線程可以執行多個任務,任務是真正進行數據處理的實體,我們開發的spout、bolt就是作為一個或者多個任務的方式執行的。
因此,計算任務在多個線程、進程和服務器之間并行進行,支持靈活的水平擴展。
4. 容錯性強
如果在消息處理過程中出了一些異常,Storm會重新安排這個出問題的處理單元。Storm保證一個處理單元永遠運行(除非你顯式殺掉這個處理單元)。
5. 可靠的消息保證
Storm可以保證spout發出的每條消息都能被“完全處理”,這也是直接區別于其他實時系統的地方,如S4。
6. 快速的消息處理
用ZeroMQ作為底層消息隊列, 保證消息能快速被處理
7. 本地模式,支持快速編程測試
Storm有一種“本地模式”,也就是在進程中模擬一個Storm集群的所有功能,以本地模式運行topology跟在集群上運行topology類似,這對于我們開發和測試來說非常有用。
注:參考轉載于
http://blog.linezing.com/2012/12/storm%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B-%E7%AC%AC%E4%B8%80%E7%AB%A0-%E5%89%8D%E8%A8%80