Samza Application Master

2018-08-22 18:12 更新

YARN 是 Hadoop 的下一代集群管理器。它允许开发人员在网格上部署和执行任意命令。如果您不熟悉 YARN 或 ApplicationMaster(AM)的概念,请阅读 Hadoop 的 YARN 页面。

Samza与YARN的集成

Samza 与 YARN 的主要集成是 Samza ApplicationMaster 的形式。这是负责管理 YARN 网格中的 Samza 工作的代码块。它决定了当流处理器发生故障时该怎么做,哪台机器运行 Samza 作业的 容器,等等。

当 Samza ApplicationMaster 启动时,它执行以下操作:

  1. 创建作业协调器,从协调器流引导作业模型和配置。
  2. 在随机端口上启动 JMX 服务器。
  3. 实例化一个指标注册表和记者来跟踪相关的指标。
  4. 用 YARN 的 RM 注册 AM。
  5. 使用每个输入流的 PartitionManager 获取 Samza 作业的分区总数(有关详细信息,请参阅 Streams 页面)。
  6. 从 Samza 工作的配置中读取所需容器的总数。
  7. 将每个分区分配给容器(在 Samza 的 AM 仪表板中称为任务组)。
  8. 为每个容器创建一个 ResourceRequest 到 YARN。如果作业中启用了 主机关联,则 AM 使用作业协调器提供的容器位置信息,并在 ResourceRequest 中请求相同的主机。
  9. 启动与分配的容器相匹配的 ContainerAllocator 线程,并启动容器进程。
  10. 轮询 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的 安全 页面。

隔离   >>

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号