YARN的一些常見錯誤

2021-09-02 11:27:48 字數 2759 閱讀 8602

1、hadoop yarn常見問題有哪些?

2、你是如何解決這些問題的?

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

hibernate一些常見錯誤

1.出現該問題可能是在倆個多對多的實體類的對映配置檔案裡 錯將set的table配成了倆個實體類的表名,事實上應該設定為橋表的表名 2.出現該問題可能是在實體類的對映配置檔案裡 hibernate5.0 以後不需要建立服務註冊物件 serviceregistry 直接這樣建立 configurati...

OA的一些常見錯誤

錯誤原因 後台的id沒有獲取到值 擴充套件 乙個引數需要在連續的幾個頁面中用到,怎麼樣傳值 在頁面中設定隱藏域 利用cookie傳值 錯誤原因 如果泛型類被例項化,this.getclass getgenericsuperclass 返回將是class,該this就是當前類的物件,所以乙個被泛型化的...

ffi一些常見的錯誤

現在ffi已經有兩年多沒人維護了,對於node版本的快速迭代,ffi現在已經連安裝都可能失敗了。本人測試的時候使用 node v10.x,node gyp v3.8 的時候總會報錯的,後面降級為node v8.13 node gyp v3.7 安裝的時候偶爾還是可以成功,建議著兩個版本不要太新了,會...