分布式流處理框架Apache Samza成為Apache的頂級項目
原文 http://www.infoq.com/cn/news/2015/02/apache-samza-top-project
Apache Samza 是一個開源、分布式的流處理框架,它使用開源分布式消息處理系統 Apache Kafka 來實現消息服務,并使用資源管理器 Apache Hadoop YARN 實現容錯處理、處理器隔離、安全性和資源管理。近日,從 Apache官方博客 中得知,開源的分布式流處理框架Samza歷經18個月的孵化期后終于升級成為Apache的頂級項目。Samza由 LinkedIn 于2013年9月 開源 并作為孵化項目貢獻給Apache。
LinkedIn的工程部和運營部的高級副總裁Kevin Scott在公布消息的博文中說到:
Samza能夠被廣泛的使用并成為Apache的頂級項目真是令人興奮,開發Samza是為了幫助解決LinkedIn流數據處理高性能的挑戰,Samza已經成為LinkedIn業務架構的核心部分。
Improve Digital 的CTO Garry Turkington在博文中說到:
Improve Digital已經積累了豐富的Samza經驗,這使得ImproveDigital使用Samza能夠構建出功能強大的流數據處理平臺。此外,Samza能夠升級成為Apache頂級項目真是太棒了。
Samza非常適用于實時流數據處理的業務(如同 Apache Storm ),如數據跟蹤、日志服務、實時服務等應用,它能夠幫助開發者進行高速消息處理,同時還具有良好的容錯能力。在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安全模型和資源隔離的支持。
LinkedIn、Microsoft、 Confluent 、Oracle、 Hortonworks 、 Uber 和 Improve Digital 等眾多著名公司都在為Samza貢獻代碼。Samza已在商務智能(BI)、金融服務、醫療保健、安全服務、移動應用、軟件開發等行業得到了廣泛應用,其用戶包括企業移動應用提供商 DoubleDutch 、歐洲領先的實時廣告技術提供商Improve Digital、金融服務公司 Jack Henry & Associates 、移動商務解決方案提供商 MobileAware 、基于云的微服務提供商 Quantiply 、社交媒體商務智能解決方案提供商 VinTank 等。
此外,實時/流計算框架除了Samza外,還包括 Google Dremel 、 Apache Drill 、Apache Storm以及 Apache S4 等。有興趣的讀者可以通過官方提供的Hello Samza工程嘗試下Samza,或者參見Background頁面以獲得更多關于Samza的信息。讀者還可以閱讀LinkedIn資深SRE Jon Bringhurst 發表的 一篇博文 ,該篇博文主要闡述了LinkedIn是如何利用Samza與Yarn、Kafka進行擴展的,它能夠幫助大家深一步地了解Samza。