运行 oozie 工作流的单一应用大师
Run single application master for oozie workflow
(根据Why does the oozie luncher consume 2 yarn containers?)
我的集群有 1900 个核心和 11TB 内存。
我的 Oozie WF 有下一个工作流程结构:
- 大约 300-400 个具有相同结构的子工作流 运行
并行(通过分叉控制节点)
- 在这些子流程中一一进行运行
几个任务(java 动作、spark 任务、shell 动作)
- 一些
子流程可以在 3-5 分钟内执行,其中一些 - 2-3 小时(长
术语火花任务)
问题是 - 是否可以 运行 在 单个 容器(应用程序主机)中的这些子工作流?默认情况下,对于每个子工作流 oozie/yarn 使用两个核心:一个用于 AM,一个用于 map-reduce 任务(控制器)。这就是瓶颈——我集群所有核心的 1/3 仅用于控制而不用于计算
我想你可以使用 oozie 的超级模式来保存启动 oozie 操作作业的容器。 AM 将启动操作,而不是从单独的容器中执行。
将以下属性添加到oozie-site.xml
。
<property>
<name>oozie.action.launcher.mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
(根据Why does the oozie luncher consume 2 yarn containers?)
我的集群有 1900 个核心和 11TB 内存。 我的 Oozie WF 有下一个工作流程结构:
- 大约 300-400 个具有相同结构的子工作流 运行 并行(通过分叉控制节点)
- 在这些子流程中一一进行运行 几个任务(java 动作、spark 任务、shell 动作)
- 一些 子流程可以在 3-5 分钟内执行,其中一些 - 2-3 小时(长 术语火花任务)
问题是 - 是否可以 运行 在 单个 容器(应用程序主机)中的这些子工作流?默认情况下,对于每个子工作流 oozie/yarn 使用两个核心:一个用于 AM,一个用于 map-reduce 任务(控制器)。这就是瓶颈——我集群所有核心的 1/3 仅用于控制而不用于计算
我想你可以使用 oozie 的超级模式来保存启动 oozie 操作作业的容器。 AM 将启动操作,而不是从单独的容器中执行。
将以下属性添加到oozie-site.xml
。
<property>
<name>oozie.action.launcher.mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>