What is Samza。
Apache Samza 是一個分布式流處理架構。它使用 Apache Kafka 用於訊息發送,採用 Apache Hadoop YARN 來提供容錯,處理器隔離,安全性和資源管理。專用於即時資料的處理,非常像Twitter的流處理系統Storm。
近日,從Apache官方部落格中得知,開源的分布式流處理架構Samza曆經18個月的孵化期後終於升級成為Apache的頂級項目。Samza由LinkedIn於2013年9月開源並作為孵化項目貢獻給Apache。
Samza非常適用於即時資料流資料處理的業務(如同Apache Storm),如資料跟蹤、Log Service、即時服務等應用,它能夠協助開發人員進行高速訊息處理,同時還具有良好的容錯能力。在Samza流資料處理過程中,每個Kafka叢集都與一個能運行Yarn的叢集相連並處理Samza作業。Samza的一個簡單處理過程如下圖所示:
Samza具有以下特性: 簡單的API:Samza提供了一個簡單基於回調且相容MapReduce的訊息處理API 狀態管理:Samza提供了一個基於LevelDB的Key/Value資料庫來儲存曆史資料,從而實現了有狀態的訊息管理 容錯處理:每當叢集中的一台機器發生故障時,YARN將會透明地將相關任務遷移到其他機器上 持久性:Samza使用Kafka保證訊息的有序處理,並能夠持久化到分區,不存在發生訊息的丟失的可能 可擴充性:Samza在每個層結構都是可分區和分布式的,Kafka提供了有序、可分區、可追加、容錯的流;YARN提供了一個分布式、供Samza啟動並執行容器環境。 可插拔/開箱即用:Samza提供了一個可插拔特性的API,該API使得Samza不僅能夠使用Kafka和YARN,還能夠使用其他的訊息系統和執行環境。 資源隔離:通過使用YARN實現了對Hadoop安全模型和資源隔離的支援 官方樣本
下圖是Samza官方給的一例子,根據Member ID分組,計算頁面訪問次數。入口訊息分別來自Machine1、2,出口是Machine3,我們可以這樣理解,訊息分散在不同的訊息系統中(Kafka),Samza從不同的Kafka中讀取topic,在將topic進行處理後,發送到Machine3,這裡不做過多分解,具體可以參照官方文檔。
匯出樣本項目hello samza嘗試使用samza,閱讀背景頁面瞭解關於更多關於samza的資訊。
官網連結:http://samza.apache.org/