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

2021-01-11 老劉情感影視

01 我們一起學大數據

大家好,今天分享的是大數據YARN的核心知識點,老劉儘量用通俗易懂的話來講述YARN知識點,爭取做到大家看完後能夠用口語化的形式將它們表達出來,做到真正的看完就會!(如果覺得老劉寫的不錯,給老劉點個讚)

02 YARN核心知識點

第1點:什麼是YARN?

YARN是Hadoop架構中的資源調度引擎模塊,從這個模塊名字就可以看出來,YARN是用來為應用提供資源管理和調度的。

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

第2點:YARN架構

先看這張架構圖,就可以知道YARN是非常典型的主從架構。YARN由一個ResourceManager(RM)和多個NodeManager(NM)構成,RM是主節點,NM是從節點。

什麼是ResourceManager?

RM是一個全局的資源管理器,集群只有一個,它主要負責整個系統的資源管理和分配,啟動監控ApplicationMaster,監控NodeManager以及資源的分配和調度。

RM主要由兩個組件構成:調度器和應用程式管理器。

什麼是調度器(Scheduler)?

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

什麼是應用程式管理器(ApplicationMaster)?

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

什麼是NodeManager?

NodeManager是一個從服務,整個集群有多個。它負責接收RM的資源分配請求,分配具體的Container給應用,它也負責監控並報告Container的使用信息給RM。

什麼是Contaienr?

Container是yarn中分配資源的一個單位,包括內存、CPU等資源,YARN以Container為單位分配資源。

第3點:YARN應用提交過程

老劉這裡簡單講講YARN的應用提交過程,主要想講的是MapReduce On Yarn這個內容。

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

第一步是用戶將應用程式提交到 ResourceManager 上;

第二步是ResourceManager為應用程式 ApplicationMaster 申請資源,並與某個 NodeManager 通信啟動第一個 Container,以啟動ApplicationMaster;

第三步是ApplicationMaster 與 ResourceManager 註冊進行通信,為內部要執行的任務申請資源,一旦得到資源後,就會和 NodeManager 通信,從而啟動對應的 Task;

第四步是所有任務運行完成後,ApplicationMaster會向 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,任務開始真正運行。

5、當RM收到任務提交的通知後,它會與指定的NodeManager通信,通知NodeManager啟動容器,NodeManager會創建佔據特定資源的Container,並且在這個Container中運行MRAppMaster進程。

6、MRAppMaster進程會初始化job,創建多個簿記對象,記錄各map任務,reduce任務的進度信息,狀態信息。

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

老劉搜了一下後,是這樣介紹的:MapReduce 作業的 application master 是一個 Java 應用,它的主類是 MRAppMaster。它通過創建一定數量的簿記對象(bookkeeping object)跟蹤作業進度來初始化作業,該簿記對象接受任務報告的進度和完成情況。

7、AppMaster接下裡要啟動Task任務了,但它不知道啟動多少個map task以及在哪個節點上啟動等信息,所以這個時候AppMaster就需要從HDFS獲取分片信息之類的。

8、獲取完信息,就要開始分配任務了,AppMaster會為了每個任務向RM請求資源分配Container。RM收到消息後,會進行資源的計算,計算什麼資源呢?一般是為map任務、reduce任務分配多大內存啊,幾個虛擬內核之類的啊。

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

9、AppMaster收到這些計算資源信息的返回結果後,就會與NodeManager通信,NodeManager就會啟動一個JVM(容器)。

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常用命令

啟動YARNstart-yarn.sh停止RM和NMstop-yarn.sh查看正在運行的任務yarn application -list殺掉正在運行任務yarn application -kill 任務id查看節點列表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調度器既得到了高的資源利用率又能保證小任務的及時完成。

03 總結

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

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

相關焦點

  • 資源管理與調度系統Yarn
    Introduction在大數據時代,為了存儲和處理海量數據,出現了豐富的技術組件,比如Hive、Spark、Flink、JStorm等,也有著數量眾多類型紛雜的應用程式和服務,比如離線作業、流式作業等,為了避免服務和服務之間、任務和任務之間的相互幹擾,傳統的做法是為每種類型的作業或者服務搭建一個單獨的集群。
  • Yarn 的內存分配管理機制及相關參數配置
    NM2:yarn.nodemanager.vmem-pmem-ratio=2.1,這表示 NodeManager 可以分配給 map/reduce Container 2.1 倍的虛擬內存,按照上面的配置,實際分配給map Container容器的虛擬內存大小為 2048*2.1=3225.6MB,若實際用到的內存超過這個值,NM就會kill掉這個map Container,任務執行過程就會出現異常
  • 更快、更強——解析Hadoop新一代MapReduce框架Yarn
    編者按:對於業界的大數據存儲及分布式處理系統來說,Hadoop 是耳熟能詳的卓越開源分布式文件存儲及處理框架,對於 Hadoop 框架的介紹在此不再累述,隨著需求的發展,Yarn 框架浮出水面, @依然光榮復興的 博客給我們做了很詳細的介紹,讀者通過本文中新舊 Hadoop MapReduce 框架的對比,更能深刻理解新的 yarn 框架的技術原理和設計思想
  • 【大數據】最新大數據學習路線(完整詳細版】
    大數據學習路線java(Java se,javaweb)Linux(shell,高並發架構,lucene,solr)Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)機器學習(R,mahout)Storm(Storm,kafka
  • Spark on Yarn學習之Yarn運行過程和Yarn應用的實現
    與 NM 通信啟動各個任務一旦 ApplicationMaster 申請到資源後, ApplicationMaster 就會將啟動命令交給 NodeManager, 要求它啟動任務。啟動命令裡包含了一些信息使得 Container 可以與 Application Master 進行通信。
  • 面試「大動作」!YARN琢磨不透?一篇文章帶你玩轉YARN!
    一、hadoop yarn 簡介Apache YARN(Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群資源管理系統。用戶可以將各種服務框架部署在 YARN 上,由 YARN 進行統一地管理和資源分配。二、YARN架構1.
  • Hadoop資源管理與作業調度框架yarn剖析
    提到Hadoop,大家可能首先想到的是Hdfs存儲、mapreduce離線計算,Hadoop2.x推出yarn(Yet Another Resource Negotiator)之後,hadoop已搖身一變為資源管理與作業調度平臺,基於yarn可在hadoop集群上可運行mepreduce(離線計算
  • 大數據開發:Hive調優的幾種思路
    在大數據技術生態當中,Hive調優是實際運行當中常常面臨的問題,企業級的數據平臺,隨著數據規模的不斷增長,要想更高效率地運行下去,就需要根據實際情況來進行優化。今天的大數據開發分享,我們就主要來講講,Hive調優的幾種思路。
  • 史上最牛YARN介紹
    1、負責數據的切分2、為應用程式申請資源並分配給內部的任務3、任務的監控與容錯3) NodeManager(NM)NodeManager管理YARN集群中的每個節點。NodeManager提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。
  • 請先把這些知識點看完!
    請先把這些知識點看完!雖然《我的世界》中的末地地圖非常危險,但是隨著遊戲實戰經驗越來越豐富,想必你會心痒痒地去嘗試這個地圖了吧。記得出發前做好準備哦!首先要了解的就是怎樣製作通往末地的傳送門,當然,我們還可以選擇使用末地珍珠來進入末地。
  • 智能、雲、大數據,輪式智慧機器人「奇點」來襲!
    在車輛生產製造環節,大數據可以讓企業及供應商了解產品使用情況和質量問題,進而可以改進產品,快速迭代;還可以預測產品缺陷,主動發現問題,解決問題,減少售後和召回成本;而且大數據可以預測用戶期望,使車的功能更加個性化,智能化,這點可與咱們息息相關。在上升一個高度,大數據還可以幫助政府更了解交通狀態,制定相應的政策與法規。
  • 依法治國的核心是什麼 高中政治知識點總結
    依法治國的核心是什麼 高中政治知識點總結 2019-04-29 19:30:59 來源:網絡資源
  • 大數據的七大核心具體價值
    大數據,可以說是史上第一次將各行各業的用戶、方案提供商、服務商、運營商以及整個生態鏈上遊廠商,融入到一個大的環境中,無論是企業級市場還是消費級市場,亦或政府公共服務,都正或將要與大數據發生千絲萬縷的聯繫。近期有不少文章暢談大數據的價值,以及其價值主要凸顯在哪些方面,這裡我們對大數據的核心具體價值進行了分門別類的梳理匯總,希望能幫助讀者更好的獲悉大數據的大價值。
  • 從《異獸來襲》看全新電影製作方式
    摘要:即將上映的《異獸來襲》是一部以「冒險+怪獸」為主題的大電影,其中後期工作由網際網路平臺藍海創意雲負責整包,這種製作分包模式或許意味著中國電影產業正在開啟藉助網際網路進行資源整合、協同創作的工業化新模式。《異獸來襲》講述的是偶然出現的外星異獸極為兇悍,在甦醒以後不斷獵殺附近度假村的遊客,而原本前往深山度假休息的遊客們面對獵殺玩命逃跑的故事。
  • 大數據分析平臺搭建架構圖
    最基礎的大數據分析平臺有上述的幾層架構,如果是數據量龐大的企業,會需要架構更加複雜的分析平臺。 通過數據平臺和BI應用建設,他們可以搭建統一的大數據共享和分析平臺,對各類業務進行前瞻性預測分析,並為集團各層次用戶提供統一的決策分析支持,提升數據共享與流轉能力。搭建一套成熟的大數據分析平臺是一項複雜的工作,因此選擇一個合適的BI工具顯得尤為重要。
  • 滿滿的一整篇,全是 JVM 核心知識點!
    每種類型的垃圾回收都需要特殊處理元數據。將元數據剝離出來,簡化了垃圾收集,提高了效率。-XX:MetaspaceSize 初始空間的大小。達到該值就會觸發垃圾收集進行類型卸載,同時 GC 會對該值進行調整:如果釋放了大量的空間,就適當降低該值;如果釋放了很少的空間,那麼在不超過 MaxMetaspaceSize 時,適當提高該值。
  • 看完這些知識點,讓你秒懂初中化學酸鹼鹽!
    太原文韜學校中考教研組帶你一起看看酸鹼鹽其實就是離子的反應的這些知識點。酸鹼鹽是化學九下學習的內容,也是公認化學最難的部分。初中化學出現學不會、學不懂的情況也是在這一塊出現的。那麼酸鹼鹽具體是什麼?為什麼難學?
  • python編程中探索性數據分析詳解,看完就會
    我們可以用Splunk來探索數據。或者我們可以得到一個簡單的提取並在Python中擺弄這些數據。在Python中運行不同的實驗似乎比試圖在Splunk中進行這種探索性的操作更有效。主要是因為我們可以無所限制地對數據做任何事。我們可以在一個地方創建非常複雜的統計模型。理論上,我們可以在Splunk中做很多的探索。它有各種報告和分析功能。但是...
  • 關於積分的幾何形象推導,保證你看一遍就會
    上期講解了微分的簡化幾何推導,各位的評論我也都看了,評論是十分犀利啊,我也從中得到很多啟發和一些新奇的想法,可謂是受益良多。那這期我們來看看微分的逆運算「積分」積分也是微積分的一個核心概念。但是,如果再細分方格或者把圓變大的話,圓內方格面積總和就會逐漸接近圓的面積,圓周率也就會更加接近3.14。因為方格和圓之間有縫隙,所以我們可以將方格不斷分割來填充縫隙,直到誤差極其微小為止。
  • 清華老教授總結:高中生物177個核心知識點大匯總!高考複習必備
    高中生物是理科中最需要背誦的一科,學好生物,要掌握基本的生物知識點。而高中三年的生物知識內容複雜繁多,這給很多考生造成了很大的壓力。其實,學習生物,不僅僅需要平時的背誦記憶,還需要掌握正確的學習方法,好的學習方法勝過無數個日夜的死記硬背。