2017-02-11 78 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

是的,它看起來對我來說是最好的解決方案 –