2017-02-11 80 views
5

(根据Why does the oozie luncher consume 2 yarn containers?为Oozie的工作流

我有1900芯和11TB RAM群集运行单个应用程序主。 我有工作流的下一个结构,用于我的Oozie的WF:

  • 约300-400mg subworkflows与将(由叉控制节点)并行运行 相同的结构
  • 在这些子流一个接一个运行 几个任务(java的行动,火花任务,外壳动作)
  • 一些 支流可以在3-5分钟执行,其中一些 - 2-3小时(长 长期火花任务)

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

+0

*“所有核心的1/3”* - 我想你是指YARN分配的逻辑“核心”,而不是真正的CPU核心。如果您的群集以“满负载”运行,但实际的CPU使用率较低,那么您可能需要重新定位 - 比较。 https://hortonworks.com/blog/managing-cpu-resources-in-your-hadoop-yarn-clusters/ _“... vcores的数量必须由管理员设置...一般建议设置它与节点上物理内核的数量有关,但是如果管理员希望在具有更快CPU的节点上运行附加容器......或者它们有许多AM容器,则可以将其启动。 –

+0

是的,我的意思是vCores,而不是真正的CPU –

+0

我也建议留意Oozie on Yarn功能(OOZIE-1770)。 –

回答

2

我想你可以使用oozie的超级模式来保存启动oozie动作任务的容器。 AM将启动该操作,而不是从单独的容器中进行操作。

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

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

是的,它看起来对我来说是最好的解决方案 –