最火爆的開源流式系統Storm vs 新星Samza

分佈計算系統框架,按照數據集的特點來說,主要分爲data-flow和streaming兩種。data-flow主要是以數據塊爲數據源來處理數據,代表有:MR、Spark等,我稱作它們爲大數據,而streaming主要是處理單位內得到的數據,這種方式,更注重於實時性,主要包括Strom、JStorm和Samza等,我稱作它們爲快數據。

在這篇文章中,我主要談論streaming相關的框架。

第一個是Storm,一個實時計算系統,它假定數據源是動態的,可以向流水一樣處理數據。

它的特點是:低延遲、高性能、分佈式、可擴展和容錯性。

架構如下圖所示。


Storm的具體概念可以參照:http://blog.csdn.net/hljlzc2007/article/details/12976211,這裏不做具體介紹。

Storm目前算是最最穩定的開源流式處理框架,但是個人認爲它有兩個問題。

1. Storm雖然支持多個語言編寫spout和bolt端的代碼,但是它的主要技術實現是clojure,這給玩大數據、開源的朋友帶來了極大的不變,因爲大家會的語言不是以java和C++等大衆語言爲主,這樣的話,變得不可控了,難以深入瞭解、修改其細節。

2. Storm可以支持在Yarn(Hadoop 2.0)上,可以和其他開源框架共享Hadoop集羣的資源,但是性能不佳,這個有待Storm改善

當然無論如何,Storm依然是目前開源流式處理框架的王者。

第二個我想說的是JStorm,這個是阿里做的,算是Storm的另一個實現,它用的語言是Java.

特點:

1. 客戶端的API與Storm基本上是一致的,如果從Storm遷移過來,不需要修改bolt和spout的代碼

2. Jstrom比Strom穩定,速度更快

3. 提供了一些新的特性

大家有興趣可以去玩玩,項目地址https://github.com/alibaba/jstorm 

第三個是Samza

Samza是由LinkedIn開源的一個技術,它是一個開源的分佈式流處理系統,非常類似於Storm。不同的是它運行在Hadoop之上,並且使用了自己開發的Kafka分佈式消息處理系統。

這是Linkin開發的一個小而美的項目,如何美呢?

1. 只有幾千行代碼,完成的功能就可以和Storm媲美,當然目前還有很多的不足

2. 和Kafka結合緊密,更方便的處理數據

3. 運行在Yarn上

之前我做過的一個項目,是Kafka + Storm + ElasticSearch,將來完全可以將Storm替換成Samza,這樣的話,還可以利用Hadoop集羣的資源,做一些存儲、離線分析的功能。將實時處理和離線分析都運行在Hadoop上,不得不說Samza是一個偉大的項目,這樣可以減少項目的增長複雜度,利於維護,還是那句話,小而美的東西,更受歡迎一些。

架構:

Samza主要包含三層,

1. 流處理層 --> Kafka

2. 執行層     --> YARN

3. 處理層    --> Samza API

Samza的流處理層和執行層都是可插拔式的,開發人員可以使用其他框架來替代,不侷限於上述兩種技術。

Samza提供了一個YARN ApplicationMaster,和YARN job,運行在集羣之外,下圖中不同顏色代表不同的主機。

Samza客戶端告訴YARN的Resouce Manager,它想啓動一個Samza job, YARN RM 告訴YARN Node manager,分配空間給YARN ApplicationMaster,NM指定完空間後,YARN container會運行Samza Task Runner。


Samza狀態管理

流式處理數據對狀態的管理是很難的,由於數據是流動的,本身沒有狀態,這樣就需要靠歷史數據來記錄應用的場合,Samza提供了一個內部的key-value數據庫,它是基於LevelDB,運行的JVM之外的,使用它來存儲歷史數據。這樣的做的好處是:

1. 減少JVM的開銷

2. 使用內部存儲,極大提高的吞吐率

3. 減少併發操作

Samza處理流程.

下圖是Samza官方給的一例子,根據Member ID分組,計算頁面訪問次數。入口消息分別來自Machine1、2,出口是Machine3,我們可以這樣理解,消息分散在不同的消息系統中(Kafka),Samza從不同的Kafka中讀取topic,在將topic進行處理後,發送到Machine3,這裏不做過多分解,具體可以參照官方文檔。



項目地址:https://github.com/apache/incubator-samza

官方文件:http://samza.incubator.apache.org/

以上給了我們無限遐想,Storm是否會保持領先地位,Samza能否取而代之呢,無論如何,作爲開發者來說,幾千行代碼,我都迫不及待去要讀一下了。



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