yarn通過可插拔方式提供排程策略,由於fifo對多使用者情況欠缺,這裡只介紹容量排程(capacity)和公平排程器(fair);
相同點:
1.支援多佇列多使用者,提高集群資源利用率;
2.支援動態載入配置檔案,比如修改了配置,yarn rmadmin -refreshqueues即可重新整理;
3.支援資源搶占和批量分配;
不同點:
1.佇列間資源分配方面,capacity是資源滿足比率最低的佇列優先,fair是fair、fifo或者drf(按照主資源公平排程演算法進行排程)
2.container資源粒度,capacity是最小資源的倍數,fair可以通過設定yarn.scheduler.increment-allocation-mb來設定規整化,另外還有cpu規整;
3.佇列間資源配置,capacity是按比例分配的,任意層總量和為100,不管集群配置多少資源都是按照這個比例來分配,fair是按照配置多少資源來限制的,比如102400 mb,50 vcores;
4.負載均衡,capacity不支援,fair支援,乙個心跳請求分配多個任務,先請求的會領完資源,fair排程可以設定yarn.scheduler.fair.max.assign=1來避免,即分配的container數目為1;
capacityscheduler支援有以下特性:
基於資源的排程
-支援資源密集型的應用程式,應用程式可以指定比預設值更高的資源需求,並支援不同種類的資源的需求。目前,記憶體是支援的資源需求。
基於使用者和組的佇列對映
-這個特性基於使用者和組能夠允許使用者對映乙個作業到特定的佇列。
capacity-scheduler.xml預設放在hadoop_conf_dir/下,例子如下:
10000
最多執行和掛起的作業數.
yarn.scheduler.capacity.maximum-am-resource-percent
0.1am佔集群資源的最大比例.
yarn.scheduler.capacity.root.queues
mobile_kpi,pc_kpi
yarn.scheduler.capacity.root.mobile_kpi.queues
search,ranking
yarn.scheduler.capacity.root.pc_kpi
.capacity40
軟限制,多餘的資源,作業可以使用這些資源,加了些彈性
yarn.scheduler.capacity.root.mobile_kpi
.capacity
60
yarn.scheduler.capacity.root.mobile_kpi.ranking
.capacity
75yarn.scheduler.capacity.root.mobile_kpi
.search
.capacity25
yarn.scheduler.capacity.root.mobile_kpi
.maximum-capacity
80
佇列的最大容量,用百分比(%)表示的浮點數。限制佇列中應用程式的彈性。預設值-1表示禁用
yarn.scheduler.capacity.root.mobile_kpi.search
.minimum-user-limit-percent25
超過4個使用者使用該佇列時,每個使用者最多能使用的資源的比例,預設為100,表示不限制,該配置是整數
yarn.scheduler.capacity.root.mobile_kpi
.search
.user-limit-factor
1
佇列容量的倍數,可以設定允許單一使用者申請更多的資源。預設值設定為1,這保證了單一使用者無法占用超過佇列設定的容量,無論集群有
多麼空閒。屬性值指定為浮點數。
yarn.scheduler.capacity.root.mobile_kpi
.search
.25
該佇列最多執行和掛起的作業數,超過將拒絕
yarn.scheduler.capacity.root.mobile_kpi
.search
.state
running
queue的狀態,running或者stopped.
yarn.scheduler.capacity.
root.mobile_kpi
.search
lisi,wangqiang
能提交到該佇列的使用者列表.
yarn.scheduler.capacity.root.mobile_kpi
.search
.acl_administer_queue
hadoop
該佇列的管理員
公平排程就如名字所說的那樣,對所執行的應用提供相同的資源份額,;
yarn-site.xml fair配置如下:
yarn.scheduler.fair.allocation.file
自定義xml配置檔案所在位置,該檔案主要用於描述各個佇列的屬性,比如資源量、權重等
yarn.scheduler.fair.user-as-default-queue
false
未指定佇列名時,使用者名稱作為應用程式所在的佇列名。如果設定為false或者未設定,所有未知佇列的應用程式將被提交到default佇列中,預設值為true。
yarn.scheduler.fair.preemption
false
是否可搶占,預設 false。
yarn.scheduler.fair.sizebasedweight
false
yarn.scheduler.fair.assignmultiple
true
是否啟動批量分配功能。當乙個節點出現大量資源時,可以一次分配完成,也可以多次分配完成。預設情況下,該引數值為false。
yarn.scheduler.fair.max.assign
1如果開啟批量分配功能,可指定一次分配的container數目。預設情況下,該引數值為-1,表示不限制。
yarn.scheduler.increment-allocation-mb
512記憶體規整化單位
yarn.scheduler.increment-allocation-vcores
1虛擬cpu規整化單位,預設是1,含義與記憶體規整化單位類似。
yarn.scheduler.fair.allow-undeclared-pools
false
fair-scheduler.xml配置例子如下:
1024 mb,1 vcores
358400 mb, 150 vcores
4.01024 mb,1 vcores
394240 mb,140 vcores
4.0fair
fair
fair排程器slot的配置
slot,它是資源基本單位。每個tasktracker上配有一定的map slot 通過引數mapred.tasktracker.map.tasks.maximum配置 和reduce slot 通過引數mapred.tasktracker.reduce.tasks.maximum配置 分別用於執行...
Spark Standalone和Yarn工作模式
其中 deploy mode預設為client。standalone client模式提交任務 spark submit master spark node1 7077 deploy mode client class org.apache.spark.examples.sparkpi exampl...
Yarn的架構和原理
yarn的簡介 yarn是hadoop2引入的通用的資源管理和任務排程的平台,可以在yarn上執行mapreduce tez spark等多種計算框架,只要計算框架實現了yarn所定義的介面,都可以執行在這套通用的hadoop資源管理和任務排程平台上。產生背景 hadoop1.0是由hdfs和map...