YARN常見問題

2021-09-02 10:38:40 字數 2708 閱讀 4740

本文彙總了幾個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日誌到底存在**?

常見問題 朗動常見問題

常見問題一 方向盤變沉 檢查胎壓是否正常,輪胎是否過度磨損。助力幫浦不工作,前輪氣壓低。冬天的話,冷車在冬天助力油比較稠,方向會重一點。檢查轉向助力油。1 應該是是助力系統有問題或則助力潤滑油有問題。2 如果你在駕車時感覺方向盤變緊,汽車偏向一側,需要檢查輪胎,或進行車輪平衡 定位。在這些問題剛剛發...

面試常見問題 1 this的常見問題

this 的含義 this關鍵字是乙個非常重要的語法點。毫不誇張地說,不理解它的含義,大部分開發任務都無法完成。前一章已經提到,this可以用在建構函式之中,表示例項物件。除此之外,this還可以用在別的場合。但不管是什麼場合,this都有乙個共同點 它總是返回乙個物件。簡單說,this就是屬性或方...

Spring常見問題

1 利用spring框架程式設計,console列印出log4j warn please initialize the log4j system properly?lupa開源社群 u i w.d t 說 明你的log4j.properties沒有配置。請把log4j.properties放到工程的...