本文彙總了幾個hadoop yarn中常見問題以及解決方案,注意,本文介紹解決方案適用於hadoop 2.2.0以及以上版本。
(1) 預設情況下,各個節點的負載不均衡(任務數目不同),有的節點很多任務在跑,有的沒有任務,怎樣讓各個節點任務數目盡可能均衡呢?
答: 預設情況下,資源排程器處於批排程模式下,即乙個心跳會盡可能多的分配任務,這樣,優先傳送心跳過來的節點將會把任務領光(前提:任務數目遠小於集群可以同時執行的任務數量),為了避免該情況發生,可以按照以下說明配置引數:
如果採用的是fair scheduler,可在yarn-site.xml中,將引數yarn.scheduler.fair.max.assign設定為1(預設是-1,)
如果採用的是capacity scheduler(預設排程器),則不能配置,目前該排程器不帶負載均衡之類的功能。
當然,從hadoop集群利用率角度看,該問題不算問題,因為一般情況下,使用者任務數目要遠遠大於集群的併發處理能力的,也就是說,通常情況下,集群時刻處於忙碌狀態,沒有節點一直空閒著。
(2)某個節點上任務數目太多,資源利用率太高,怎麼控制乙個節點上的任務數目?
答:乙個節點上執行的任務數目主要由兩個因素決定,乙個是nodemanager可使用的資源總量,乙個是單個任務的資源需求量,比如乙個nodemanager上可用資源為8 gb記憶體,8 cpu,單個任務資源需求量為1 gb記憶體,1cpu,則該節點最多執行8個任務。
nodemanager上可用資源是由管理員在配置檔案yarn-site.xml中配置的,相關引數如下:
yarn.nodemanager.resource.memory-mb:總的可用物理記憶體量,預設是8096
yarn.nodemanager.resource.cpu-vcores:總的可用cpu數目,預設是8
對於mapreduce而言,每個作業的任務資源量可通過以下引數設定:
mapreduce.map.memory.mb:物理記憶體量,預設是1024
mapreduce.map.cpu.vcores:cpu數目,預設是1
注:以上這些配置屬性的詳細介紹可參考文章: hadoop yarn配置引數剖析(1)—rm與nm相關引數。
預設情況,各個排程器只會對記憶體資源進行排程,不會考慮cpu資源,你需要在排程器配置檔案中進行相關設定,具體可參考文章: hadoop yarn配置引數剖析(4)—fair scheduler相關引數和 hadoop yarn配置引數剖析(5)—capacity scheduler相關引數。
(3)如何設定單個任務占用的記憶體量和cpu數目?
答:對於mapreduce而言,每個作業的任務資源量可通過以下引數設定:
mapreduce.map.memory.mb:物理記憶體量,預設是1024
mapreduce.map.cpu.vcores:cpu數目,預設是1
需要注意的是,預設情況,各個排程器只會對記憶體資源進行排程,不會考慮cpu資源,你需要在排程器配置檔案中進行相關設定。
(4) 使用者給任務設定的記憶體量為1000mb,為何最終分配的記憶體卻是1024mb?
答:為了易於管理資源和排程資源,hadoop yarn內建了資源規整化演算法,它規定了最小可申請資源量、最大可申請資源量和資源規整化因子,如果應用程式申請的資源量小於最小可申請資源量,則yarn會將其大小改為最小可申請量,也就是說,應用程式獲得資源不會小於自己申請的資源,但也不一定相等;如果應用程式申請的資源量大於最大可申請資源量,則會丟擲異常,無法申請成功;規整化因子是用來規整化應用程式資源的,應用程式申請的資源如果不是該因子的整數倍,則將被修改為最小的整數倍對應的值,公式為ceil(a/b)*b,其中a是應用程式申請的資源,b為規整化因子。
以上介紹的引數需在yarn-site.xml中設定,相關引數如下:
yarn.scheduler.minimum-allocation-mb:最小可申請記憶體量,預設是1024
yarn.scheduler.minimum-allocation-vcores:最小可申請cpu數,預設是1
yarn.scheduler.maximum-allocation-mb:最大可申請記憶體量,預設是8096
yarn.scheduler.maximum-allocation-vcores:最大可申請cpu數,預設是4
對於規整化因子,不同排程器不同,具體如下:
fifo和capacity scheduler,規整化因子等於最小可申請資源量,不可單獨配置。
fair scheduler:規整化因子通過引數yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores設定,預設是1024和1。
通過以上介紹可知,應用程式申請到資源量可能大於資源申請的資源量,比如yarn的最小可申請資源記憶體量為1024,規整因子是1024,如果乙個應用程式申請1500記憶體,則會得到2048記憶體,如果規整因子是512,則得到1536記憶體。
(5)我們使用的是fairscheduler,配置了多個佇列,當使用者提交乙個作業,指定的佇列不存在時,fair scheduler會自動建立乙個新佇列而不是報錯(比如報錯:佇列***不存在),如何避免這種情況發生?
答:在yarn-site.xml中設定yarn.scheduler.fair.allow-undeclared-pools,將它的值配置為false(預設是true)。
(6)使用hadoop 2.0過程中,遇到了錯誤,怎樣排查錯誤?
答:從hadoop 日誌入手,hadoop日誌存放位置可參考我這篇文章: hadoop日誌到底存在**?
Hadoop YARN常見問題以及解決方案
本文彙總了幾個hadoop yarn中常見問題以及解決方案,注意,本文介紹解決方案適用於hadoop 2.2.0以及以上版本。1 預設情況下,各個節點的負載不均衡 任務數目不同 有的節點很多任務在跑,有的沒有任務,怎樣讓各個節點任務數目盡可能均衡呢?答 預設情況下,資源排程器處於批排程模式下,即乙個...
springcloud常見問題總結以(一)
1.eureka註冊服務慢 服務註冊涉及到週期性的心跳,預設30秒一次,只有當例項 伺服器端和客戶端本地快取中的元資料都相同時,服務才能被其他客戶端發現 可能需要三次心跳 可以使用引數eureka.instance.leaserenewalintervalinseconds修改eureka clie...
常見問題 朗動常見問題
常見問題一 方向盤變沉 檢查胎壓是否正常,輪胎是否過度磨損。助力幫浦不工作,前輪氣壓低。冬天的話,冷車在冬天助力油比較稠,方向會重一點。檢查轉向助力油。1 應該是是助力系統有問題或則助力潤滑油有問題。2 如果你在駕車時感覺方向盤變緊,汽車偏向一側,需要檢查輪胎,或進行車輪平衡 定位。在這些問題剛剛發...