2017-04-13 17 views
0

目前我使用的是默認紗調度但是想這樣做 -有沒有在運行時配置和更改Yarn調度程序的方法?

Run Yarn using the default scheduler 
If (number of jobs in queue > X) { 
    Change the Yarn scheduler to FIFO 
} 

通過代碼這甚至可能嗎?

請注意,我正在使用Yarn作爲RM在aws EMR羣集上運行Spark作業。

+1

這可能是矯枉過正你,但如果你想配置的隊列/資源再分配自動,你可以看看搶佔(說實話我看着它自己,所以我不是專家)。請參閱[這裏](https://hortonworks.com/blog/better-slas-via-resource-preemption-in-yarns-capacityscheduler/)和[這裏](https://docs.hortonworks.com/HDPDocuments/HDP2 /HDP-2.4.2/bk_yarn_resource_mgt/content/preemption.html)以獲得良好的概述。 – tbone

+0

爲什麼你認爲這會是一個矯枉過正的問題? –

+1

只是不是一個簡單的,因爲你的僞代碼都是;) – tbone

回答

1

那麼,可以通過輪詢器檢查當前隊列(使用RM API)並更新yarn-site.xml + RM的可能重新啓動。但是,重新啓動RM可能會影響您的隊列,因爲當前作業將被終止或關閉(並可能在稍後重新嘗試)。

如果您需要在Capacity和FIFO調度程序之間進行更高效的切換,那麼您可能需要擴展這些類並設計自己的可以執行僞代碼工作的調度程序。

默認情況下,EMR使用容量調度程序和DefaultResourceCalculator,並在默認隊列上調整作業。例如,EMR對像路徑紗構造如下:

/home/hadoop/.versions/2.4.0-amzn-6/etc/hadoop/yarn-site.xml 

     <property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value></property> 

with 

/home/hadoop/.versions/2.4.0-amzn-6/etc/hadoop/capacity-scheduler.xml 

    org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator 
相關問題