Samza Application Master
YARN 是 Hadoop 的下一代集群管理器。它允许开发人员在网格上部署和执行任意命令。如果您不熟悉 YARN 或 ApplicationMaster(AM)的概念,请阅读 Hadoop 的 YARN 页面。
Samza与YARN的集成
Samza 与 YARN 的主要集成是 Samza ApplicationMaster 的形式。这是负责管理 YARN 网格中的 Samza 工作的代码块。它决定了当流处理器发生故障时该怎么做,哪台机器运行 Samza 作业的 容器,等等。
当 Samza ApplicationMaster 启动时,它执行以下操作:
- 创建作业协调器,从协调器流引导作业模型和配置。
- 在随机端口上启动 JMX 服务器。
- 实例化一个指标注册表和记者来跟踪相关的指标。
- 用 YARN 的 RM 注册 AM。
- 使用每个输入流的 PartitionManager 获取 Samza 作业的分区总数(有关详细信息,请参阅 Streams 页面)。
- 从 Samza 工作的配置中读取所需容器的总数。
- 将每个分区分配给容器(在 Samza 的 AM 仪表板中称为任务组)。
- 为每个容器创建一个 ResourceRequest 到 YARN。如果作业中启用了 主机关联,则 AM 使用作业协调器提供的容器位置信息,并在 ResourceRequest 中请求相同的主机。
- 启动与分配的容器相匹配的 ContainerAllocator 线程,并启动容器进程。
- 轮询 YARN RM 每秒检查分配和释放的容器。
从这一点开始,ApplicationMaster 只对来自 RM 的事件做出反应,并将其委托给 ContainerAllocator 线程。
容错
每当分配一个容器时,AM 将使用 YARN NM 在容器中启动一个 SamzaContainer(分配给它的适当的分区)。如果容器出现非零返回代码,AM 将请求一个新容器,并重新启动SamzaContainer。如果 SamzaContainer 失败太多次太快,则 ApplicationMaster 将使整个 Samza 的作业以非零返回码失败。有关详细信息,请参阅
yarn.container.retry.count 和 yarn.container.retry.window.ms 配置参数。
当 AM 从 YARN 接收到重新启动信号时,它会抛出一个 SamzaException。这将引发清理和成功关闭 AM(YARN 不会认为 AM 失败)。
如果 AM 本身失败,则 YARN 将处理重新启动 AM。当 AM 重新启动时,所有正在运行的容器将被杀死,AM 将从头开始。将执行相同的操作列表,如上所示。AM 将为其 SamzaContainers 请求新的容器,并且像刚刚开始的那样首先进行。YARN 具有在 yarn-site.xml 中定义的 yarn.resourcemanager.am.max-retries 配置参数。此配置默认为1,这意味着默认情况下,单个 AM 故障将导致Samza作业停止运行。
安全
即使在安全模式下使用 YARN,Samza 仪表板的 HTTP 访问目前仍未保护。这意味着访问 YARN 网格的用户可以对 Samza ApplicationMaster 的 HTTP 服务器进行端口扫描,并在浏览器中打开仪表板来查看其内容。任何人都可以看到敏感的配置,这样就要小心了。有计划使用 Hadoop的安全功能(SPENAGO)确保Samza的ApplicationMaster 。
有关详细信息,请参阅Samza的 安全 页面。
更多建议: