布式實時計算系統Storm新版發布,超越Hadoop?
Apache旗下的分散式實時計算系統Storm終於發布主要版本更新Storm 2.0,這個版本在性能跟功能上,都有重大改進,其核心重新以Java實現,不只改進了性能,更方便功能的擴展,而新版本也改變了與Kafka整合的方式。
Apache Storm是一個開源分散式計算系統,可以處理與Hadoop類似的工作,只不過Hadoop只能以批次進行,但是Storm卻能連續無限的處理數據流,進行如實時分析、在線機器學習或是ETL等工作。Apache Storm的執行速度非常快,其基準檢驗每個節點每秒可以處理超過一百萬個Tuple。
開發團隊重新設計Storm的核心,把原本用Clojure實現的部分刪除,現在整個核心都是以純Java實現,除了提高性能之外,也讓Storm內部的API更容易使用以及擴展,官方提到,過去Storm中使用Clojure的部分也沒有什麼不好,只是因為Clojure學習曲線比較高,阻礙了許多新的貢獻者,而在改成Java後,Storm代碼將更容易維護。
Storm 2.0的核心簡化了線程模型,並且加入了高性能的消息傳輸子系統,以及輕量級的Back Pressure模型,以向後兼容為前提,提高消息吞吐量並降低延遲,這些改進讓Storm 2.0成為一個可以打破1微秒延遲的串流引擎。Storm 2.0中加入了一個新類型API,讓使用者可以更簡單地以函數表達串流計算,這些API建立在核心之上,核心會自動融合多重操作,並最佳化工作管道。
另外,Storm 2.0與Kafka的整合大幅度地改變,原本Storm 1.x版本的Kafka整合是使用storm-kafka模塊,但是由於Kafka棄用了底層的客戶端函數庫,因此Storm的使用者,現在必須轉而使用storm-kafka-client模塊,這個模塊是整合kafka-clients函數庫撰寫而成。官方表示,新舊模塊的遷移很簡單,他們也提供了說明文件,讓用戶對照新舊模塊的功能。
值得注意的是,storm-kafka-client模塊在Storm 1.x的時候,允許Kafka以自己的機制管理介面(Spout)與其負責的扇區,但後來經官方評估,認為這個機制並不適合Storm,因此在1.2.0棄用,並於2.0完全移除。而且storm-kafka-client模塊的訂閱介面也被刪除,官方提到,除非使用者自定義訂閱操作,否則不會有影響。
TAG:雲智時代 |