分布式流处理框架Apache Samza成为Apache的顶级项目

jopen 6年前

原文  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的一个简单处理过程如下图所示:

分布式流处理框架Apache Samza成为Apache的顶级项目

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、 HortonworksUberImprove Digital 等众多著名公司都在为Samza贡献代码。Samza已在商务智能(BI)、金融服务、医疗保健、安全服务、移动应用、软件开发等行业得到了广泛应用,其用户包括企业移动应用提供商 DoubleDutch 、欧洲领先的实时广告技术提供商Improve Digital、金融服务公司 Jack Henry & Associates 、移动商务解决方案提供商 MobileAware 、基于云的微服务提供商 Quantiply 、社交媒体商务智能解决方案提供商 VinTank 等。

此外,实时/流计算框架除了Samza外,还包括 Google DremelApache Drill 、Apache Storm以及 Apache S4 等。有兴趣的读者可以通过官方提供的Hello Samza工程尝试下Samza,或者参见Background页面以获得更多关于Samza的信息。读者还可以阅读LinkedIn资深SRE Jon Bringhurst 发表的 一篇博文 ,该篇博文主要阐述了LinkedIn是如何利用Samza与Yarn、Kafka进行扩展的,它能够帮助大家深一步地了解Samza。