Yarn容量排程器優化之並行處理問題

2021-10-09 10:55:12 字數 3587 閱讀 7832

yarn預設排程器為capacity scheduler(容量排程器),且預設只有乙個佇列——default。如果佇列中執行第乙個任務資源不夠,就不會再執行第二個任務,一直等到第乙個任務執行完畢。

(1)啟動1個hive客戶端,執行以下插入資料的sql語句。

hive (default)> insert into table student values(1,'abc');
執行該語句,hive會初始化乙個spark session,用以執行hive on spark任務。由於未指定佇列,故該spark session預設占用使用的就是default佇列,且會一直占用該佇列,直到退出hive客戶端。

可訪問resourcemanager的web頁面檢視相關資訊。

(2)在hive客戶端開啟的狀態下,提交乙個mr。

[root@hadoop102 ~]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1
mr任務同樣未指定佇列,所以其預設也提交到了default佇列,由於容量排程器單個佇列的並行度為1。故後提交的mr任務會一直等待,不能開始執行。

任務提交介面如下:

resourcemanager的web頁面如下:

(3)容量排程器default佇列中,同一時間只有乙個任務執行,併發度低,如何解決呢?

方案二:建立多佇列,比如增加乙個hive佇列。

(1)在hadoop102的/opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml檔案中修改如下引數值

[root@hadoop102 hadoop]$ vim capacity-scheduler.xml

yarn.scheduler.capacity.maximum-am-resource-percent

0.5該引數通常用於限制處於活動狀態的應用程式數目。該引數型別為浮點型,

yarn.scheduler.capacity.maximum-am-resource-percent設定,而單個佇列可通過引數yarn.scheduler.capacity..maximum-am-resource-percent設定適合自己的值。

(2)分發capacity-scheduler.xml配置檔案

[root@hadoop102 hadoop]$ xsync capacity-scheduler.xml

(3)關閉正在執行的任務,重新啟動yarn集群

[root@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh

[root@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

方案二:建立多佇列,也可以增加容量排程器的併發度。

在企業裡面如何配置多佇列:

按照計算引擎建立佇列hive、spark、flink

有什麼好處?

假如公司來了乙個菜鳥,寫了乙個遞迴死迴圈,公司集群資源耗盡,大資料全部癱瘓。

解耦。

假如11.11資料量非常大,任務非常多,如果所有任務都參與執行,一定執行不完,怎麼辦?

可以支援降級執行。

下單 √

支付√點讚x

1增加容量排程器佇列

(1)修改容量排程器配置檔案

預設yarn的配置下,容量排程器只有一條default佇列。在capacity-scheduler.xml中可以配置多條佇列,修改以下屬性,增加hive佇列。

yarn.scheduler.capacity.root.queues

default,hive

再增加乙個hive佇列

yarn.scheduler.capacity.root.default.capacity

50default佇列的容量為50%

同時為新加佇列新增必要屬性:

yarn.scheduler.capacity.root.hive.capacity

50hive佇列的容量為50%

yarn.scheduler.capacity.root.hive.user-limit-factor

1乙個使用者最多能夠獲取該佇列資源容量的比例,取值0-1

yarn.scheduler.capacity.root.hive.maximum-capacity

80hive佇列的最大容量(自己佇列資源不夠,可以使用其他佇列資源上限)

yarn.scheduler.capacity.root.hive.state

running

開啟hive佇列執行,不設定佇列不能使用

*訪問控制,控制誰可以將任務提交到該佇列,*表示任何人

yarn.scheduler.capacity.root.hive.acl_administer_queue

*訪問控制,控制誰可以管理(包括提交和取消)該佇列的任務,*表示任何人

*指定哪個使用者可以提交配置任務優先順序

-1hive佇列中任務的最大生命時長,以秒為單位。任何小於或等於零的值將被視為禁用。

-1hive佇列中任務的預設生命時長,以秒為單位。任何小於或等於零的值將被視為禁用。

(2)分發配置檔案

[root@hadoop102 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml
(3)重啟hadoop集群2測試新佇列(1)提交乙個mr任務,並指定隊列為hive[root@hadoop102 ~]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi -dmapreduce.job.queuename=hive 1 1

(2)檢視resourcemanager的web頁面,觀察任務被提交到的佇列

Yarn 配置容量排程器

目錄 佇列比例 修改capacity scheduler.xml配置檔案 將新的配置同步到集群所有節點,重啟yarn 提交任務 檢視任務 yarn site.xml root prod 生產環境 40 dev 開發環境 60 mapreduce mr開發 50 spark spark開發 50 ya...

Hadoop之Yarn資源排程器

文章主要內容 1.yarn的基本架構 2.yarn的工作機制 3.資源排程器 fifo capacity scheduler和fair scheduler 4.任務的推測執行 yarn是乙個資源平台,負責為運算程式提供伺服器運算資源,相當於乙個分布式的操作平台,而mapreduce等運算程式相當於執...

YARN的排程器

yarn主要就是為了排程資源,管理任務等。resourcemanager yarn上主節點,接收客戶端提交的任務,對資源進行分配 nodemanager yarn上從節點,主要進行任務計算 jobhistoryserver 檢視已經完成的任務歷史日誌記錄的服務 timelineserver hado...