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

  • 2015-02-05
  • 本文字数:1413 字

    阅读完需:约 5 分钟

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 经验,这使得 Improve
Digital 使用 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。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。