保證看完就會!大資料YARN核心知識點來襲!

2022-01-10 18:35:55 字數 3614 閱讀 5824

第1點:什麼是yarn?

yarn是hadoop架構中的資源排程引擎模組,從這個模組名字就可以看出來,yarn是用來為應用提供資源管理和排程的。

類似於hdfs,yarn也是經典的主從架構。架構的內容放在第2點講,如果面試介紹yarn的話,老劉建議第一點和第二點一起講。

第2點:yarn架構

先看這張架構圖,就可以知道yarn是非常典型的主從架構。yarn由乙個resourcemanager(rm)和多個nodemanager(nm)構成,rm是主節點,nm是從節點。

什麼是resourcemanager?

rm主要由兩個元件構成:排程器和應用程式管理器。

什麼是排程器(scheduler)?

排程器就是根據容量 、佇列一些限制條件,將系統中的資源分配給各個正在執行的應用程式,這裡有一句話想說,排程器是乙個純排程器,就是它只管資源分配,不參與具體應用程式相關的工作。

應用程式管理器它主要負責監控管理整個系統的所有應用程式,同時負責向rm申請資源、返還資源等。

什麼是nodemanager?

nodemanager是乙個從服務,整個集群有多個。它負責接收rm的資源分配請求,分配具體的container給應用,它也負責監控並報告container的使用資訊給rm。

什麼是contaienr?

container是yarn中分配資源的乙個單位,包括記憶體、cpu等資源,yarn以container為單位分配資源。

第3點:yarn應用提交過程

老劉這裡簡單講講yarn的應用提交過程,主要想講的是mapreduce on yarn這個內容。

根據上面的圖,就可以看出來yarn的應用提交過程。

第一步是使用者將應用程式提交到 resourcemanager 上;

下面就是重點內容,詳細講講mapreduce on yarn。

第4點:mapreduce on yarn

這一點,很重要,第3點就是說說了皮毛,第4點是詳細的描述整個過程,老劉盡量講的通俗易懂點,mapreduce on yarn執行過程如下:

1、先把程式打成jar包,接著客戶端執行hadoop jar命令,就會把job提交到集群中執行。在這個過程中,程式裡的job.waitforcompletion()會呼叫job裡的submit()方法。

2、接著會遠端呼叫resourcemanager的getid,就會得到乙個mr作業的id。同時也會檢查輸出目錄是否存在,如果沒有指定輸出目錄或者目錄已經存在,就會報錯;也會計算作業分片,若無法計算分片,也會報錯。

3、接下裡,會把job相關的配置檔案,jar包,分片資訊,上傳到hdfs。

4、客戶端將應用程式提交給rm,任務開始真正執行。

這裡面的簿記物件要說一下,很多地方都沒解釋它是什麼,就一筆忽略,在老劉看來這就有點不太好。

這一步老劉想說的是在看資料中,大家可以嘗試反問下自己,比如就這個它會計算資源,你可以問問自己,它計算什麼資源,這對自身進步有很大幫助。

10、但是在容器中執行任務(yarnchild)之前,會將執行任務需要的資源拉取到本地(jar包,配置檔案,分布式快取檔案)。

11、任務執行。

老劉盡量用口語化的形式表達出來了,希望大家能夠記住它。

第5點:yarn應用生命週期

1、client向rm提交應用,包括am程式及啟動am的命令。

2、rm為am分配第乙個容器,並與對應的nm通訊,令其在容器上啟動應用的am。

3、am啟動時向rm註冊,允許client向rm獲取am資訊然後直接和am通訊。

4、am通過資源請求協議,為應用協商容器資源。

5、如容器分配成功,am要求nm在容器中啟動應用,應用啟動後可以和am獨立通訊。

6、應用程式在容器中執行,並向am匯報。

7、在應用執行期間,client和am通訊獲取應用狀態。

8、應用執行完成,am向rm登出並關閉,釋放資源。

第6點:yarn常用命令

啟動yarn

start-yarn.sh

停止rm和nm

stop-yarn.sh

檢視正在執行的任務

殺掉正在執行任務

檢視節點列表

yarn node -list

第7點:yarn排程器大家先想想為什麼需要排程器?在現實生活中,絕對會遇到同時提交任務的場景,那這個時候到底如何分配資源滿足這些任務呢?誰先執行呢?都是有講究的!

​所以在yarn框架中,排程器是一塊很重要的內容。有了合適的排程規則,就可以保證多個應用可以在同一時間有條不紊的工作。

yarn中最原始的排程規則是fifo,就是誰先提交任務誰先執行。但是這樣很可能會導致兩種情況:① 乙個大任務獨佔資源,其他的資源需要不斷的等待大任務完成;② 一堆小任務占用資源,大任務一直無法得到適當的資源。所以fifo雖然很簡單,但是並不能滿足我們的需求。

所以在yarn中現在有三種排程器可以選擇:fifo scheduler ,capacity scheduler,fairs cheduler。

fifo scheduler是把應用按提交的順序排成乙個佇列,這是乙個先進先出佇列,在進行資源分配的時候,先給佇列中第乙個應用進行分配資源,等到第乙個的應用需求滿足後再給第二個分配。

fifo scheduler是最簡單也是最容易理解的排程器,也不需要任何配置,但它的缺點剛剛也說了。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。所以如果在共享的集群中,更適合採用capacity scheduler或fair scheduler。

對於capacity排程器,它會有乙個專門的佇列用來執行小任務,但是為小任務專門設定乙個佇列會預先占用一定的集群資源,這就導致大任務的執行時間會落後於使用fifo排程器時的時間。

但是在fair排程器中,我們不需要預先占用一定的系統資源,fair排程器會為所有執行的job動態的調整系統資源。當第乙個大job提交時,這時只有這乙個job在執行,此時它獲得了所有集群資源;當第二個小任務提交後,fair排程器會分配一半資源給這個小任務,讓這兩個任務公平的共享集群資源。小任務執行完成之後就會釋放自己占用的資源,大任務又獲得了全部的資源,這樣就保證了fair排程器既得到了高的資源利用率又能保證小任務的及時完成。

好啦,yarn知識點就講的差不多了,老劉盡量用通俗易懂的口語化形式將這些知識點表達出來了,希望能夠對大資料感興趣的同學有幫助,也希望能夠得到大佬們的批評和指點。

覺得老劉寫的不錯的,給老劉點個贊吧!

大資料 三 YARN

流式計算框架 storm 記憶體計算框架 spark 離線計算框架 mapreduce 僅適合離線批處理 具有很好的容錯性和擴充套件性 適合簡單的批處理任務 缺點明顯 啟動開銷大 過多使用磁碟導致效率低下等 dag計算框架 apache tez dag計算 多個作業之間存在資料依賴關係,並形成乙個依...

大資料hadoop之yarn

yarn是乙個資源排程平台負責為運算程式提供伺服器運算資源,相當於乙個分布式作業系統平台,mr等程式在上面執行。mr程式把任務提交到客戶端所在節點 rm將使用者請求初始化乙個task進入自己的任務排程佇列,傳送task任務到nm am向rm申請執行maptask容器 rm向nm分配maptask,n...

大資料安全怎麼保證?

當前,我國亟須依據 關於促進大資料發展的行動綱要 綜合採取戰略 政策 法律等多種工具,構建起包括法律 行政 技術 行業 社會等在內的大資料安全保護體系,加大大資料的安全保護力度,營造健康環保的大資料生態運營體系。一是加強基礎保護技術的研發和推廣應用。推廣業務系統防攻擊防入侵通用保護技術的普及和應用,...