×

Samza 入门

Samza 你好Samza 下载Samza 功能预览

Samza 详细介绍

Samza 背景Samza 概念Samza 结构

Samza 与其他流处理项目比较

Samza 比较介绍Samza MUPD8Samza 与 StormSamza 与 Spark Streaming

Samza API

Samza API概述

Samza 核心

Samza ContainerSamza 流Samza 序列化Samza 定期检查Samza 状态管理Samza 窗口功能Samza 协调器流Samza 事件循环Samza 指标Samza JMX

Samza 作业部署

Samza JobRunnerSamza 配置Samza 打包Samza YARN工作Samza 记录Samza 再处理Samza Web UI和REST APISamza 分离框架和作业部署

Samza YARN

Samza Application MasterSamza YARN执行隔离Samza 主机关联和 YARNSamza YARN资源本地化Samza YARN安全Samza 写入HDFSSamza 从HDFS文件读取

Samza 相关操作

Samza 安全Samza Kafka自动创建主题

Samza REST服务

Samza REST服务概观Samza REST服务资源Samza REST服务监视器

Samza 附录

附录一 工作资源附录二 任务资源附录三 远程调试附录四 从HDFS部署Samza工作附录五 部署Samza Job到CDH附录六 在多节点YARN中运行附录七 在没有联网的情况下运行附录八 Samza REST入门附录九 Async API和多线程指南附录十 代码附录十一 Samza配置参考

Samza 背景


该页面提供了有关流处理的一些背景知识,描述了 Samza 是什么,以及为什么构建它。

什么是消息?

消息系统是实现近实时异步计算的常用方式。当事情发生时,消息可以添加到消息队列(ActiveMQ,RabbitMQ),pub-sub 系统(Kestrel,Kafka)或日志聚合系统(Flume,Scribe)中。下游用户从这些系统读取消息,并根据消息内容进行处理或采取行动。

假设你有一个网站,每当有人加载一个页面时,你会发送一个“用户浏览的页面”事件到消息系统。您可能会让用户执行以下任何操作:

  • 将消息存储在Hadoop中以供将来分析
  • 计数页面视图并更新仪表板
  • 如果页面视图失败,则触发警报
  • 向其他用户发送电子邮件通知
  • 使用用户的配置文件加入页面视图事件,并将消息发送回消息系统

消息传递系统允许您将所有这些工作与实际网页服务分离。

什么是流处理?

消息系统是一个相当低级别的基础设施 - 它存储消息并等待用户使用它们。当您开始编写产生或使用消息的代码时,您很快就会发现在处理层中有很多棘手的问题需要解决。Samza 旨在帮助解决这些问题。

考虑上面的计数示例(计数页面视图和更新仪表板)。当您的使用者正在运行的机器出现故障,并且当前计数器值丢失时会发生什么?你怎么恢复?处理器在重新启动时应该在哪里运行?如果底层邮件系统向您发送两次相同的邮件或丢失邮件怎么办?(除非您小心,否则您的计数将不正确。)如果您想按页面网址分组的网页浏览量计算如何?如果单个机器处理太多,您如何将计算分布在多台机器上?

流处理在消息传递系统之上是更高层次的抽象,它的目的是要正确解决这一类问题。

Samza

Samza 是一个流处理框架,具有以下功能:

  • 简单 API:与大多数低级消息系统 API 不同,Samza 提供了一个非常简单的基于回调的“过程消息” API,与 MapReduce 相当。
  • 管理状态: Samza 管理流处理器状态的快照和恢复。当处理器重新启动时,Samza 将其状态恢复为一致的快照。Samza 被构建来处理大量的状态(每个分区有许多千兆字节)。
  • 容错:当集群中的某台机器发生故障时,Samza 将与 YARN 合作,将您的任务透明地迁移到另一台机器。
  • 耐久性: Samza 使用 Kafka 来确保消息按照写入分区的顺序进行处理,并且不会丢失任何消息。
  • 可扩展性: Samza 在每个级别进行分区和分发。Kafka 提供有序,分区,可重放,容错的流。YARN 为 Samza 容器提供了分布式环境。
  • 可插拔:尽管 Samza 与 Kafka 和 YARN 开箱即用,Samza 提供了一个可插拔的 API,可让您与其他邮件系统和执行环境一起运行 Samza。
  • 处理器隔离: Samza 与 Apache YARN 合作,它支持 Hadoop 的安全模式,并通过 Linux CGroups 进行资源隔离。

备择方案

可用的开源流处理系统实际上很年轻,没有一个系统提供完整的解决方案。这一领域的新问题包括:如何管理流处理器的状态,流是否应该在磁盘上远程缓冲、在接收到重复消息或丢失消息时该怎么做,以及如何对底层消息传递系统进行建模。

 Samza 的主要特点是:

  • Samza 支持容错的本地状态。状态可以被认为是与处理任务分开和共处的表。状态本身被模仿为流。如果由于机器故障而导致本地状态丢失,则会重播状态流以进行恢复。
  • 流被排序,分区,可重放和容错。
  • YARN 用于处理器隔离,安全和容错。
  • 作业解耦:如果一个工作变慢,建立积压的未处理的消息,系统的其余部分不受影响。

有关 Samza 的更深入的讨论及其与其他流处理系统的关系,请参阅 Samza 的 比较 文档。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)