【Apache Samza 系列】实时流数据处理框架Samza中文教程 (一)-- 介绍
What is Samza?Apache Samza 是一个分布式流处理框架。它使用 Apache Kafka 用于消息发送,采用 Apache Hadoop YARN 来提供容错,处理器隔离,安全性和资源管理。专用于实时数据的处理,非常像Twitter的流处理系统Storm。近日,从Apache官方博客中得知,开源的分布式流处理框架Samza历经18个月的孵化期后终于升级成为Apache的顶级项
What is Samza?
Apache Samza 是一个分布式流处理框架。它使用 Apache Kafka 用于消息发送,采用 Apache Hadoop YARN 来提供容错,处理器隔离,安全性和资源管理。专用于实时数据的处理,非常像Twitter的流处理系统Storm。
近日,从Apache官方博客中得知,开源的分布式流处理框架Samza历经18个月的孵化期后终于升级成为Apache的顶级项目。Samza由LinkedIn于2013年9月开源并作为孵化项目贡献给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安全模型和资源隔离的支持
官方示例
下图是Samza官方给的一例子,根据Member ID分组,计算页面访问次数。入口消息分别来自Machine1、2,出口是Machine3,我们可以这样理解,消息分散在不同的消息系统中(Kafka),Samza从不同的Kafka中读取topic,在将topic进行处理后,发送到Machine3,这里不做过多分解,具体可以参照官方文档。
导出示例项目hello samza尝试使用samza,阅读背景页面了解关于更多关于samza的信息。
官网链接:http://samza.apache.org/
更多推荐
所有评论(0)