每個job提交到yarn上執行時,都會分配container容器去執行,而這個容器需要資源才能執行,這個資源就是cpu和記憶體。
1、cpu資源排程
目前的cpu被yarn劃分為虛擬cpu,這是yarn自己引入的概念,因為每個伺服器的cpu計算能力不一樣,有的機器可能是 其他機器的計算能力的2倍,然後可以通過多配置幾個虛擬記憶體彌補差異。在yarn中,cpu的相關配置如下。
表示該節點伺服器上yarn可以使用的虛擬的cpu個數,預設是8,推薦配置與核心個數相同,如果節點cpu的核心個數不足8個,需要調小這個值,yarn不會智慧型的去檢測物理核數。如果機器效能較好,可以配置為物理核數的2倍。
表示單個任務最小可以申請的虛擬核心數,預設為1
表示單個任務最大可以申請的虛擬核數,預設為4;如果申請資源時,超過這個配置,會丟擲 invalidresourcerequestexception
2、memory資源排程
yarn一般允許使用者配置每個節點上可用的物理資源,可用指的是將機器上記憶體減去hdfs的,hbase的等等剩下的可用的記憶體。
設定該節點上yarn可使用的記憶體,預設為8g,如果節點記憶體不足8g,要減少這個值,yarn不會智慧型的去檢測記憶體資源,一般這個值式yarn的可用記憶體資源。
單個任務最小申請物理記憶體量,預設是1024m,根據自己業務設定
單個任務最大可以申請的物理記憶體量,預設為8291m
如果乙個伺服器是32核,虛擬後為64核,128g記憶體,我們該如何設定上面的6個引數呢?即如何做到資源最大化利用
生產上我們一般要預留15-20%的記憶體,那麼可用記憶體就是128*0.8=102.4g,去除其他元件的使用,我們設定成90g就可以了。
1、yarn.sheduler.maximum-allocation-vcores
一般就設定成4個,cloudera公司做過效能測試,如果cpu大於等於5之後,cpu的利用率反而不是很好。這個引數可以根據生成伺服器決定,比如公司伺服器很富裕,那就直接設定成1:1;設定成32,如果不是很富裕,可以直接設定成1:2。我們以1:2來計算。
2、yarn.scheduler.minimum-allocation-vcores
如果設定vcoure = 1,那麼最大可以跑64/1=64個container,如果設定成這樣,最小container是64/4=16個。
3、yarn.scheduler.minmum-allocation-mb
如果設定成2g,那麼90/2=45最多可以跑45個container,如果設定成4g,那麼最多可以跑24個;vcore有些浪費。
4、yarn.scheduler.maximum-allocation-mb
這個要根據自己公司的業務設定,如果有大任務,需要5-6g記憶體,那就設定為8g,那麼最大可以跑11個container。
yarn資源調優的幾個引數
每個job提交到yarn執行的時候,都會分配container容器去執行,而這個容器需要資源才能執行,那這個資源就是cpu和記憶體,也就是每個任務container都需要cpu和記憶體,那麼下面我們從cpu和記憶體去分析 目前的cpu被劃分為虛擬cpu cpu virtual core 這裡的虛擬c...
Spark Spark調優 資源調優
spark在乙個executor的記憶體分為三塊,1.一塊是execution記憶體 2.一塊是storge 記憶體 3.一塊是其他記憶體 執行記憶體是執行記憶體,加入,聚合都是在這部分記憶體中執行.shuffle的資料也會先快取在這個記憶體中,滿了再寫入磁碟,能減少io,其實地圖過程也是在這個記憶...
spark 資源引數調優
了解完了spark作業執行的基本原理之後,對資源相關的引數就容易理解了。所謂的spark資源引數調優,其實主要就是對spark執行過程中各個使用資源的地方,通過調節各種引數,來優化資源使用的效率,從而提公升spark作業的執行效能。以下引數就是spark中主要的資源引數,每個引數都對應著作業執行原理...