Hadoop之Yarn資源排程器

2021-09-27 09:22:37 字數 2138 閱讀 6856

文章主要內容

1. yarn的基本架構

2. yarn的工作機制

3. 資源排程器(fifo、capacity scheduler和fair scheduler)

4. 任務的推測執行

yarn是乙個資源平台,負責為運算程式提供伺服器運算資源,相當於乙個分布式的操作平台,而mapreduce等運算程式相當於執行於作業系統之上的應用程式。是hadoop2.x之後才增加的新功能。

mr程式提交到客戶端所在的節點

提交job執行所需要的資源

resourcemanager將使用者的請求初始化成乙個task,如果任務需要等待,就把其放到fifo排程佇列(先進先出)中進行等待

這時,有nodemanager的伺服器空閒,就去resourcemanager中把task領回。

這時,有對應數量的node的伺服器空閒,就去把任務領回,建立容器container。

reduce向map獲取相應分割槽的資料進行運算。

程式執行完成後,mr會向rm登出自己

3.一些問題

hdfs、yarn和mapreduce是hadoop框架中最重要的三個部分,他們是如何聯絡在一起工作的?

簡單來說,進入mr的資料是從hdfs中讀出的,mr輸出的資料是要寫入hdfs的;其中,mr在執行的過程中,需要把任務放到yarn上面進行狀態的協調。

hadoop目前的作業排程器有三種:fifo、capacity scheduler和fair scheduler

預設的排程器可以在:yarn-de****t.xml中檢視,一般來說預設的是capacity scheduler。

3.1 先進先出排程器(fifo)

3.2 容量排程器(capacity scheduler)

3.3 公平排程器(fair scheduler)

併發度非常高,要求集群的效能比較高的情況下。

缺額的含義:

例如上圖:假設job11的理想狀態下獲得的記憶體是4g,job12的理想狀態下獲得的記憶體是5g。但是實際上job11獲得了1g的記憶體,job21獲得了3g的記憶體。那麼job11的缺額就是3g,job21的缺額就是2g,那麼job11就可以比job21獲得資源的優先執行。

作業完成時間取決於最慢的任務完成時間

乙個作業由若干個map任務和reduce任務構成。因硬體老化,軟體bug等,某些任務可能可能執行非常慢。

若系統中99%的map任務都完成了,只有少數幾個map老是進度很慢,完不成,該如何?

推測執行機制

發現拖後腿的任務,比如某個任務執行速度遠慢於任務平均速度,為拖後腿任務啟動乙個備份任務,同時執行,採用先執行完的結構。

執行推測任務的前提條件

a. 每個task只能有乙個備份任務

b. 當前job已完成的task必須不小於5%

c. 開啟推測執行引數設定。mapred-site.xml檔案中預設是開啟的。

不能啟用推測執行機制的情況

a. 任務間存在嚴重的負載傾斜

b. 特殊任務,比如任務向資料庫中寫資料(會寫重)

演算法原理

首先:計算當前任務按其本來的速度執行下去,完成的時刻。

其次:計算如果開乙個備份,執行完成的時刻(速度以其他速度的平均完成時間來計算)

最後:比較原本完成的時刻和備份完成的時刻,選取差值最大的任務,為其開啟備份任務

Yarn資源排程

由於yarn良好的相容性和擴充套件性,目前可以支援大部分資料引擎,所以了解yarn的資源排程原理很有必要,yarn主要由四個重要角色組成 yarn排程主要分為8個步驟如上圖所示 1.有yarnclient提交program資訊打拼resourcemanager,包括 應用 和應用需要的一切引數和環境...

Yarn資源排程

yarn的介紹 yarn是hadoop集群當中的資源管理系統模組,從hadoop2.0開始引入yarn模組,yarn可為各類計算框架提供資源的管理和排程,主要用於管理集群當中的資源 主要是伺服器的各種硬體資源,包括cpu,記憶體,磁碟,網路io等 以及排程執行在yarn上面的各種任務。yarn核心出...

yarn 資源排程

目錄關於yarn常用引數設定 yarn我們都知道主要是用於做資源排程,任務分配等功能的,那麼在hadoop當中,究竟使用什麼演算法來進行任務排程就需要我們關注了,hadoop支援好幾種任務的排程方式,不同的場景需要使用不同的任務排程器.把任務按提交的順序排成乙個佇列,這是乙個先進先出佇列,在進行資源...