自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hadoop YARN中內(nèi)存和CPU兩種資源的調(diào)度和隔離

開(kāi)發(fā) 前端 Hadoop
Hadoop YARN同時(shí)支持內(nèi)存和CPU兩種資源的調(diào)度(默認(rèn)只支持內(nèi)存,如果想進(jìn)一步調(diào)度CPU,需要自己進(jìn)行一些配置),本文將介紹YARN是如何對(duì)這些資源進(jìn)行調(diào)度和隔離的。

Hadoop  YARN同時(shí)支持內(nèi)存和CPU兩種資源的調(diào)度(默認(rèn)只支持內(nèi)存,如果想進(jìn)一步調(diào)度CPU,需要自己進(jìn)行一些配置),本文將介紹YARN是如何對(duì)這些資源進(jìn)行調(diào)度和隔離的。

在YARN中,資源管理由ResourceManager和NodeManager共同完成,其中,ResourceManager中的調(diào)度器負(fù)責(zé) 資源的分配,而NodeManager則負(fù)責(zé)資源的供給和隔離。ResourceManager將某個(gè)NodeManager上資源分配給任務(wù)(這就是所 謂的“資源調(diào)度”)后,NodeManager需按照要求為任務(wù)提供相應(yīng)的資源,甚至保證這些資源應(yīng)具有獨(dú)占性,為任務(wù)運(yùn)行提供基礎(chǔ)的保證,這就是所謂的 資源隔離。

關(guān)于Hadoop YARN資源調(diào)度器的詳細(xì)介紹,可參考我的這篇文章:YARN/MRv2 Resource Manager深入剖析—資源調(diào)度器。

在正式介紹具體的資源調(diào)度和隔離之前,先品味一下內(nèi)存和CPU這兩種資源的特點(diǎn),這是兩種性質(zhì)不同的資源。內(nèi)存資源的多少會(huì)會(huì)決定任務(wù)的生死,如果內(nèi)存不夠,任務(wù)可能會(huì)運(yùn)行失??;相比之下,CPU資源則不同,它只會(huì)決定任務(wù)運(yùn)行的快慢,不會(huì)對(duì)生死產(chǎn)生影響。

【YARN中內(nèi)存資源的調(diào)度和隔離】

基于以上考慮,YARN允許用戶配置每個(gè)節(jié)點(diǎn)上可用的物理內(nèi)存資源,注意,這里是“可用的”,因?yàn)橐粋€(gè)節(jié)點(diǎn)上的內(nèi)存會(huì)被若干個(gè)服務(wù)共享,比如一部分給YARN,一部分給HDFS,一部分給HBase等,YARN配置的只是自己可以使用的,配置參數(shù)如下:

(1)yarn.nodemanager.resource.memory-mb

表示該節(jié)點(diǎn)上YARN可使用的物理內(nèi)存總量,默認(rèn)是8192(MB),注意,如果你的節(jié)點(diǎn)內(nèi)存資源不夠8GB,則需要調(diào)減小這個(gè)值,而YARN不會(huì)智能的探測(cè)節(jié)點(diǎn)的物理內(nèi)存總量。

(2)yarn.nodemanager.vmem-pmem-ratio

任務(wù)每使用1MB物理內(nèi)存,最多可使用虛擬內(nèi)存量,默認(rèn)是2.1。

(3) yarn.nodemanager.pmem-check-enabled

是否啟動(dòng)一個(gè)線程檢查每個(gè)任務(wù)正使用的物理內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)是true。

(4) yarn.nodemanager.vmem-check-enabled

是否啟動(dòng)一個(gè)線程檢查每個(gè)任務(wù)正使用的虛擬內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)是true。

(5)yarn.scheduler.minimum-allocation-mb

單個(gè)任務(wù)可申請(qǐng)的最少物理內(nèi)存量,默認(rèn)是1024(MB),如果一個(gè)任務(wù)申請(qǐng)的物理內(nèi)存量少于該值,則該對(duì)應(yīng)的值改為這個(gè)數(shù)。

(6)yarn.scheduler.maximum-allocation-mb

單個(gè)任務(wù)可申請(qǐng)的最多物理內(nèi)存量,默認(rèn)是8192(MB)。

默認(rèn)情況下,YARN采用了線程監(jiān)控的方法判斷任務(wù)是否超量使用內(nèi)存,一旦發(fā)現(xiàn)超量,則直接將其殺死。由于Cgroups對(duì)內(nèi)存的控制缺乏靈活性 (即任務(wù)任何時(shí)刻不能超過(guò)內(nèi)存上限,如果超過(guò),則直接將其殺死或者報(bào)OOM),而Java進(jìn)程在創(chuàng)建瞬間內(nèi)存將翻倍,之后驟降到正常值,這種情況下,采用 線程監(jiān)控的方式更加靈活(當(dāng)發(fā)現(xiàn)進(jìn)程樹(shù)內(nèi)存瞬間翻倍超過(guò)設(shè)定值時(shí),可認(rèn)為是正?,F(xiàn)象,不會(huì)將任務(wù)殺死),因此YARN未提供Cgroups內(nèi)存隔離機(jī)制。

【YARN中CPU資源的調(diào)度和隔離】

在YARN中,CPU資源的組織方式仍在探索中,目前(2.2.0版本)只是一個(gè)初步的,非常粗粒度的實(shí)現(xiàn)方式,更細(xì)粒度的CPU劃分方式已經(jīng)提出來(lái)了,正在完善和實(shí)現(xiàn)中。

目前的CPU被劃分成虛擬CPU(CPU virtual Core),這里的虛擬CPU是YARN自己引入的概念,初衷是,考慮到不同節(jié)點(diǎn)的CPU性能可能不同,每個(gè)CPU具有的計(jì)算能力也是不一樣的,比如某個(gè) 物理CPU的計(jì)算能力可能是另外一個(gè)物理CPU的2倍,這時(shí)候,你可以通過(guò)為***個(gè)物理CPU多配置幾個(gè)虛擬CPU彌補(bǔ)這種差異。用戶提交作業(yè)時(shí),可以指 定每個(gè)任務(wù)需要的虛擬CPU個(gè)數(shù)。在YARN中,CPU相關(guān)配置參數(shù)如下:

(1)yarn.nodemanager.resource.cpu-vcores

表示該節(jié)點(diǎn)上YARN可使用的虛擬CPU個(gè)數(shù),默認(rèn)是8,注意,目前推薦將該值設(shè)值為與物理CPU核數(shù)數(shù)目相同。如果你的節(jié)點(diǎn)CPU核數(shù)不夠8個(gè),則需要調(diào)減小這個(gè)值,而YARN不會(huì)智能的探測(cè)節(jié)點(diǎn)的物理CPU總數(shù)。

(2) yarn.scheduler.minimum-allocation-vcores

單個(gè)任務(wù)可申請(qǐng)的最小虛擬CPU個(gè)數(shù),默認(rèn)是1,如果一個(gè)任務(wù)申請(qǐng)的CPU個(gè)數(shù)少于該數(shù),則該對(duì)應(yīng)的值改為這個(gè)數(shù)。

(3)yarn.scheduler.maximum-allocation-vcores

單個(gè)任務(wù)可申請(qǐng)的最多虛擬CPU個(gè)數(shù),默認(rèn)是32。

默認(rèn)情況下,YARN是不會(huì)對(duì)CPU資源進(jìn)行調(diào)度的,你需要配置相應(yīng)的資源調(diào)度器讓你支持,具體可參考我的這兩篇文章:

(1)Hadoop YARN配置參數(shù)剖析(4)—Fair Scheduler相關(guān)參數(shù)

(2)Hadoop YARN配置參數(shù)剖析(5)—Capacity Scheduler相關(guān)參數(shù)

默認(rèn)情況下,NodeManager不會(huì)對(duì)CPU資源進(jìn)行任何隔離,你可以通過(guò)啟用Cgroups讓你支持CPU隔離。

由于CPU資源的獨(dú)特性,目前這種CPU分配方式仍然是粗粒度的。舉個(gè)例子,很多任務(wù)可能是IO密集型的,消耗的CPU資源非常少,如果此時(shí)你為它 分配一個(gè)CPU,則是一種嚴(yán)重浪費(fèi),你完全可以讓他與其他幾個(gè)任務(wù)公用一個(gè)CPU,也就是說(shuō),我們需要支持更粒度的CPU表達(dá)方式。

借鑒亞馬遜EC2中CPU資源的劃分方式,即提出了CPU最小單位為EC2 Compute Unit(ECU),一個(gè)ECU代表相當(dāng)于1.0-1.2 GHz 2007 Opteron or 2007 Xeon處理器的處理能力。YARN提出了CPU最小單位YARN Compute Unit(YCU),目前這個(gè)數(shù)是一個(gè)整數(shù),默認(rèn)是720,由參數(shù)yarn.nodemanager.resource.cpu-ycus-per- core設(shè)置,表示一個(gè)CPU core具備的計(jì)算能力(該feature在2.2.0版本中并不存在,可能增加到2.3.0版本中),這樣,用戶提交作業(yè)時(shí),直接指定需要的YCU即 可,比如指定值為360,表示用1/2個(gè)CPU core,實(shí)際表現(xiàn)為,只使用一個(gè)CPU core的1/2計(jì)算時(shí)間。注意,在操作系統(tǒng)層,CPU資源是按照時(shí)間片分配的,你可以說(shuō),一個(gè)進(jìn)程使用1/3的CPU時(shí)間片,或者1/5的時(shí)間片。

https://issues.apache.org/jira/browse/YARN-1089

https://issues.apache.org/jira/browse/YARN-1024

Hadoop 新特性、改進(jìn)、優(yōu)化和Bug分析系列5:YARN-3

【總結(jié)】

目前,YARN 內(nèi)存資源調(diào)度借鑒了Hadoop 1.0中的方式,比較合理,但CPU資源的調(diào)度方式仍在不斷改進(jìn)中,目前只是一個(gè)初步的粗糙實(shí)現(xiàn),相信在不久的將來(lái),YARN 中CPU資源的調(diào)度將更加完善。

原文鏈接:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-memory-cpu-scheduling/

責(zé)任編輯:陳四芳 來(lái)源: dongxicheng.org
相關(guān)推薦

2013-05-27 14:31:34

Hadoop 2.0

2011-06-22 14:14:27

pageEncodincontentType

2012-12-24 13:30:34

iOS

2023-12-26 00:55:51

資源隔離CPU

2021-02-24 13:51:45

BIMAI建筑技術(shù)

2014-03-21 09:30:26

軟件開(kāi)發(fā)碼農(nóng)

2011-08-08 14:13:47

iPhone XML NSXMLParse

2021-04-28 07:34:46

SpringScheduledAsync

2020-02-21 17:33:17

SparkKafka數(shù)據(jù)

2016-11-07 09:02:02

Malloc內(nèi)存syscall

2024-09-20 11:32:28

.NET內(nèi)存管理

2009-07-30 15:09:44

asp.net中Bin

2021-07-26 14:14:40

VRAI人工智能

2023-11-09 09:09:36

ZookeeperCP組件

2014-01-07 14:04:13

HadoopMapReduce

2022-03-24 23:04:37

linux靜態(tài)庫(kù)動(dòng)態(tài)庫(kù)

2010-07-13 10:47:18

Perl面向?qū)ο?/a>

2009-06-19 17:05:08

MVC框架Struts和Spri

2015-05-05 09:37:29

OpenStackNova資源統(tǒng)計(jì)

2020-09-24 10:09:01

GETPOST前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)