每個job提交到yarn執行的時候,都會分配container容器去執行,而這個容器需要資源才能執行,那這個資源就是cpu和記憶體,也就是每個任務container都需要cpu和記憶體,那麼下面我們從cpu和記憶體去分析
目前的cpu被劃分為虛擬cpu(cpu virtual core),這裡的虛擬cpu是yarn自己引入的概念,因為每個伺服器的cpu計算能力不一樣,有的機器可能是其他機器計算能力的兩倍,然後可以通過多配置幾個虛擬cpu彌補差異。在yarn中,cpu的相關配置如下:
1.yarn.nodemanager.resource.cpu-vcores
表示該節點伺服器上yarn可以使用的虛擬cpu個數,預設是8,推薦將值配置與物理核心個數相同,如果節點cpu核心不足8個,要調小這個值,yarn不會智慧型的去檢測物理核心數
2.yarn.scheduler.minimum-allocation-vcores
單個任務最小可申請的虛擬核心數,預設為1
3.yarn.scheduler.maximum-allocation-vcores
單個任務最大可申請的虛擬核心水,預設為4,如果申請資源時,超過這個配置,會丟擲invalidresourcerequestexception
yarn一般允許使用者配置每個節點上可用的物理資源,注意,這裡是"可用的",不是物理記憶體多少,就設定多少,因為乙個伺服器節點上會有若干的記憶體,一部分給yarn,一部分給hdfs,一部分給hbase;member相關的配置如下:
1.yarn.nodemanager.resource.memory-mb
設定該節點上yarn可使用的記憶體,預設為8g,如果節點記憶體資源不足8g,要減少這個值,yarn不會智慧型的去檢測記憶體資源,一般這個設定yarn的可用記憶體資源
2.yarn.scheduler.minimum-allocation-mb
單個任務最小申請物理記憶體量,預設1024mb,根據自己的業務設定
3.yarn.scheduler.maximum-allocation-mb
單個任務最大申請物理記憶體量,預設為8291mb
如果有乙個伺服器16核,64g記憶體,我們應該如何配置上面的6個引數呢(一句話:資源最大化利用)
yarn.nodemanager.resource.cpu-vcores 虛擬core
這個引數根據自己生產伺服器決定,比如公司伺服器很富裕,那就直接1:1,設定成16,如果公司伺服器不是很富裕,那就直接成1:2,設定成32,我們生產設定的是32
yarn.nodemanager.resource.memory-mb 總記憶體
生產上我們一般要預留15-20%的記憶體,那麼可用記憶體就是64*0.8=51.2g,我們設定成50g就可以了(固定經驗值)
yarn.scheduler.minimum-allocation-mb 單任務最小記憶體
如果設定成2g,那50/2 = 25,就是最多可以跑25個container
如果設定成3g,那50/3 = 16,就是最多可以跑16個container
yarn.scheduler.minimum-allocation-mb 單任務最少vcore
如果設定vcore = 1,那麼32/1 = 32,就是最多可以跑32個container,如果設定成這個,根據上面記憶體分配的情況,最多只能跑25個container,vcore有點浪費
如果設定vcore = 2,那麼32/2 = 16,就是最多可以跑16個container
yarn.scheduler.maximum-allocation-vcores 單任務最多vcore
一般就設定成4個,cloudera公司做過效能測試,如果cpu大於等於5之後,cpu利用率反而不是很好(固定經驗值)
yarn.scheduler.maximum-allocation-mb 單任務最大記憶體
這個要根據自己公司業務設定,如果有大任務,需要5-6g記憶體,那就設定為8g
Yarn的資源調優
每個job提交到yarn上執行時,都會分配container容器去執行,而這個容器需要資源才能執行,這個資源就是cpu和記憶體。1 cpu資源排程 目前的cpu被yarn劃分為虛擬cpu,這是yarn自己引入的概念,因為每個伺服器的cpu計算能力不一樣,有的機器可能是 其他機器的計算能力的2倍,然後...
spark 資源引數調優
了解完了spark作業執行的基本原理之後,對資源相關的引數就容易理解了。所謂的spark資源引數調優,其實主要就是對spark執行過程中各個使用資源的地方,通過調節各種引數,來優化資源使用的效率,從而提公升spark作業的執行效能。以下引數就是spark中主要的資源引數,每個引數都對應著作業執行原理...
Hadoop調優的幾個引數
hdfs hdfs site.xml中的dfs.namenode.handler.count 20 log2 cluster size 比如集群規模為 8 台時,此引數設定為 60,該引數決定有多少執行緒數用來處理不同 datanode 的併發心跳以及客戶端併發的元資料操作 yarn yarn si...