【问题标题】:Run single application master for oozie workflow为 oozie 工作流运行单个应用程序主程序
【发布时间】:2017-06-29 22:13:57
【问题描述】:

(根据Why does the oozie luncher consume 2 yarn containers?

我有 1900 个内核和 11TB RAM 的集群。 我的 Oozie WF 有了下一个工作流程结构:

  • 大约 300-400 个具有相同结构的子工作流将运行 并行(通过 fork 控制节点)
  • 在这些子流中逐一运行 多个任务(java 操作、spark 任务、shell 操作)
  • 一些 子流可以在 3-5 分钟内执行,其中一些 - 2-3 小时(长 学期火花任务)

问题是 - 是否可以在 单个 容器(应用程序主机)中运行这些子工作流?默认情况下,对于每个子工作流,oozie/yarn 使用两个核心:一个用于 AM,一个用于 map-reduce 任务(控制器)。这就是瓶颈——我集群中所有核心的 1/3 仅用于控制而不用于计算

【问题讨论】:

  • "1/3 of all cores" -- 我猜你的意思是 YARN 分配的逻辑“vcores”,而不是真正的 CPU 核心。如果您的集群以“满负荷”运行,但实际 CPU 使用率很低,那么您可能需要过度分配——参见。 hortonworks.com/blog/… "...vcores 的数量必须由管理员设置...一般建议将其设置为节点上的物理核心数,但管理员可以根据需要增加它在具有更快 CPU 的节点上运行其他容器..." -- 或者如果它们有很多 AM 容器。
  • 是的,我指的是 vCore,而不是真正的 CPU
  • 我还建议密切关注 Oozie on Yarn 功能 (OOZIE-1770)。

标签: java hadoop-yarn oozie bigdata


【解决方案1】:

我猜你可以使用 oozie 的 uber 模式来保存启动 oozie 动作作业的容器。 AM 将启动操作,而不是从单独的容器中执行。

将以下属性添加到oozie-site.xml

<property>
  <name>oozie.action.launcher.mapreduce.job.ubertask.enable</name>
  <value>true</value>
</property>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多