生產環境調優YARN Container引數

2021-10-03 15:34:27 字數 3339 閱讀 5295

如何優化container引數??假設128g,16個物理core的伺服器

1、裝完centos,消耗記憶體1g

2、系統預留15%-20%記憶體(大概26g,其中包含centos系統占用的1g記憶體),用來防止全部使用導致系統夯住和oom機制,或者給未來部署元件預留點空間。

3、假設該伺服器上只有datanode,nodemanager節點,餘下記憶體128g-26g=102g

1)datanode大概分配2g

2)nodemanager分配4g

3)container記憶體分配

減掉datanode和nodemanger,還剩餘102g-2g-4g=96g,極限情況下伺服器剩下的記憶體全部分給nodemanager:96g

配置引數:

yarn.nodemanager.resource.memory-mb=96g

最大分配記憶體和最小分配記憶體

yarn.scheduler.maximum-allocation-mb=96g,極限情況下,只有1個container,記憶體96g

yarn.scheduler.minimum-allocation-mb=1g,極限情況下,只有96個container,每個記憶體1g

其中contanier的記憶體會自動增加,預設是1g的遞增,contanier的數量是1-96個。

4)contanier虛擬核:

預設伺服器物理核和虛擬核的比例是1:2,16個物理core的伺服器也就是擁有32虛擬核32vcore

1:2的配置引數:

yarn.nodemanager.resource.pcores-vcores-multiplier=2
極限情況下物理核全部分給nodemanager,也就是32vcore,配置引數:

yarn.nodemanager.resource.cpu-vcores=32
分配vcore和最大分配vcore配置:

yarn.scheduler.minimum-allocation-vcores=1,極限情況下,只有32個container,

yarn.scheduler.maximum-allocation-vcores=32,極限情況下,只有1個container,

所以container數量是1-32個。

官方建議,cloudera公司推薦,乙個container的vcore最好不要超過5,那麼設定4,所以極限情況下,32/4=8,只有8個container

yarn.scheduler.maximum-allocation-vcores=4
綜合memory+vcore計算確定vocre=4,container為8個,記憶體分配

yarn.nodemanager.resource.memory-mb=96g

yarn.scheduler.minimum-allocation-mb=1g

yarn.scheduler.maximum-allocation-mb=12g

極限情況下8個container,96g/8=12g

不過當spark計算時記憶體不夠大,這個引數肯定要調大,那麼這種理想化的設定個數必然要打破,以memory為主(但是正常情況下12g是夠用了),

根據記憶體設定引數

yarn.nodemanager.resource.memory-mb =96g

yarn.scheduler.minimum-allocation-mb=1g

yarn.scheduler.maximum-allocation-mb=8g

就是12個container ,vcore為12*2=24

根據vocre設定引數

yarn.nodemanager.resource.cpu-vcores =32

yarn.scheduler.minimum-allocation-vcores =1

yarn.scheduler.maximum-allocation-vcores =2

16 個container,記憶體占用168g=128g超過resource資源的總記憶體,所以根據記憶體為主導設定引數

vcore是yarn自己引入的,設計初衷是考慮不同節點的cpu的效能不一樣,每個cpu的計算能力不一樣。比如某個物理cpu是另外乙個物理cpu的2倍,這時通過設定第乙個物理cpu的虛擬core來彌補這種差異(當期節點的xml去設定該引數),不過一般不會存在這種問題,因為選機器不可能選不一樣的。

例如:

假如 256g記憶體 56core,請問引數如何設定?

256*20%=25.6g ==52g,剩餘256-52-2-4=198g

yarn.nodemanager.resource.memory-mb=198g

yarn.scheduler.minimum-allocation-mb=1g

yarn.scheduler.maximum-allocation-mb=7g

28個container 287g=196g

yarn.nodemanager.resource.cpu-vcores=112

yarn.scheduler.minimum-allocation-vcores=1

yarn.scheduler.maximum-allocation-vcores=4

加入該節點還有其他的元件,比如hbase和regionserver程序,那麼該如何設定

hbase regionserver占用記憶體30g,nodemanager這種記憶體:96g-30g=66g

生產配置:yarn-site.xml

yarn.nodemanager.resource.memory-mb

2048

yarn.scheduler.minimum-allocation-mb

1024

單個任務可申請最少記憶體,預設1024mb

yarn.scheduler.maximum-allocation-mb

2048

單個任務可申請最大記憶體,預設8192mb

yarn.nodemanager.resource.cpu-vcores

2

CDH6 3 2之YARN生產環境調優

調整yarn 本主題僅適用於yarn群集,並介紹如何為群集調整和優化yarn。概觀此概述提供yarn群集的抽象描述和yarn調整的目標。yarn群集由主機組成。主機提供記憶體和cpu資源。vcore或虛擬核心是主機cpu的使用份額。調整yarn主要包括在工作主機上最佳地定義容器。您可以將容器視為由記...

Docker環境調優

overlayfs是乙個新一代的聯合檔案系統,類似於aufs,但速度更快,實現更簡單。docker為overlayfs提供了兩個儲存驅動程式 舊版的overlay,新版的overlay2 更穩定 容器中會產生大量日誌檔案,很容器佔滿磁碟空間。通過設定日誌檔案大小,可以有效控制日誌檔案對磁碟的佔用量 ...

spark調優 shuffle調優

基於spark1.6 引數可以通過 new sparkcontext set 來設定,也可以通過命令的引數設定 conf spark.shuffle.file.buffer 預設值 32k 引數說明 該引數用於設定shuffle write task的bufferedoutputstream的buf...