yarn資源管理

在YARN的NodeManager節點上,會將機器的CPU和內存的一定值抽離出來,抽離成虛擬的值,然後這些虛擬的值在根據配置組成多個Container,當application提出申請時,就會分配相應的Container資源。關於默認值我們可以查看官網,如下表所示。

參數 默認值
yarn.nodemanager.resource.memory-mb -1
yarn.nodemanager.resource.cpu-vcores -1
yarn.scheduler.minimum-allocation-mb 1024MB
yarn.scheduler.maximum-allocation-mb 8192MB
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 4


內存配置    

yarn.nodemanager.resource.memory-mb默認值爲-1,代表着YARN的NodeManager佔總內存的80%。也就是說加入我們的機器爲64GB內存,出去非YARN進程需要的20%內存,我們大概需要64*0.8≈51GB,在分配的時候,單個任務可以申請的默認最小內存爲1G,任務量大的話可最大提高到8GB。  

 在生產場景中,簡單的配置,一般情況下:yarn.nodemanager.resource.memory-mb直接設置成我們需要的值,且要是最大和最小內存需求的整數倍;(一般Container容器中最小內存爲4G,最大內存爲16G)    

假如:64GB的機器內存,我們有51GB的內存可用於NodeManager分配,根據上面的介紹,我們可以直接將yarn.nodemanager.resource.memory-mb值爲48GB,然後容器最小內存爲4GB,最大內存爲16GB,也就是在當前的NodeManager節點下,我們最多可以有12個容器,最少可以有3個容器。    

CPU配置    

此處的CPU指的是虛擬的CPU(CPU virtual core),之所以產生虛擬CPU(CPU vCore)這一概念,是因爲物理CPU的處理能力的差異,爲平衡這種差異,就引入這一概念。    

yarn.nodemanager.resource.cpu-vcores表示能夠分配給Container的CPU核數,默認配置爲-1,代表值爲8個虛擬CPU,推薦該值的設置和物理CPU的核數數量相同,若不夠,則需要調小該值。    

yarn.scheduler.minimum-allocation-vcores的默認值爲1,表示每個Container容器在處理任務的時候可申請的最少CPU個數爲1個。    

yarn.scheduler.maximum-allocation-vcores的默認值爲4,表示每個Container容器在處理任務的時候可申請的最大CPU個數爲4個。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章