目錄
佇列比例
修改capacity-scheduler.xml配置檔案
將新的配置同步到集群所有節點,重啟yarn
提交任務
檢視任務
yarn-site.xml
root
├── prod 生產環境 40 %
└── dev 開發環境 60 %
├── mapreduce mr開發 50%
└── spark spark開發 50%
yarn.scheduler.capacity.root.queues
prod,dev
yarn.scheduler.capacity.root.dev.queues
mapreduce,spark
yarn.scheduler.capacity.root.prod.capacity
40 yarn.scheduler.capacity.root.dev.capacity
60 yarn.scheduler.capacity.root.dev.maximum-capacity
75 yarn.scheduler.capacity.root.dev.mapreduce.capacity
50 yarn.scheduler.capacity.root.dev.spark.capacity
50
我們可以看到,dev佇列又被分成了mapreduce和spark兩個相同容量的子佇列。dev的maximum-capacity屬性被設定成了75%,所以即使prod佇列完全空閒dev也不會占用全部集群資源,也就是說,prod佇列仍有25%的可用資源用來應急。我們注意到,mapreduce和spark兩個佇列沒有設定maximum-capacity屬性,也就是說mapreduce或spark佇列中的job可能會用到整個dev佇列的所有資源(最多為集群的75%)。而類似的,prod由於沒有設定maximum-capacity屬性,它有可能會占用集群全部資源。
關於佇列的設定,這取決於我們具體的應用。比如,在mapreduce中,我們可以通過mapreduce.job.queuename屬性指定要用的佇列。如果佇列不存在,我們在提交任務時就會收到錯誤。如果我們沒有定義任何佇列,所有的應用將會放在乙個default佇列中。
注意:對於capacity排程器,我們的佇列名必須是佇列樹中的最後一部分,如果我們使用佇列樹則不會被識別。比如,在上面配置中,我們使用prod和mapreduce作為佇列名是可以的,但是如果我們用root.dev.mapreduce或者dev. mapreduce是無效的。
同步:
scp capacity-scheduler.xml node02:$pwd
scp capacity-scheduler.xml node03:$pwd
重啟yarn:
stop-yarn.sh
start-yarn.sh
通過以下命令指定任務提交到的對列:mapreduce.job.queuename=對列名
mapreduce.job.queuename=mapreduce
提交:
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi -d mapreduce.job.queuename=mapreduce 10 10
yarn.scheduler.fair.allow-undeclared-pools
true
yarn.scheduler.fair.user-as-default-queue
true
YARN容量排程器多佇列配置及應用提交詳解
目錄 0 需求 1 配置多佇列的容量排程器 2 向hive佇列提交任務 yarn預設的容量排程器是一條單佇列的排程器,在實際使用中會出現單個任務阻塞整個佇列的情況。同時,隨著業務的增長,公司需要分業務限制集群使用率。這就需要我們按照業務種類配置多條任務佇列。預設yarn的配置下,容量排程器只有一條d...
Yarn容量排程器優化之並行處理問題
yarn預設排程器為capacity scheduler 容量排程器 且預設只有乙個佇列 default。如果佇列中執行第乙個任務資源不夠,就不會再執行第二個任務,一直等到第乙個任務執行完畢。1 啟動1個hive客戶端,執行以下插入資料的sql語句。hive default insert into ...
YARN的排程器
yarn主要就是為了排程資源,管理任務等。resourcemanager yarn上主節點,接收客戶端提交的任務,對資源進行分配 nodemanager yarn上從節點,主要進行任務計算 jobhistoryserver 檢視已經完成的任務歷史日誌記錄的服務 timelineserver hado...