大數據系列之Hadoop的資源管理模塊YARN

2021-01-11 CDA數據分析師

CDA數據分析師 出品

1、 YARN的產生

在之前文章中介紹過hadoop1與hadoop2架構的區別是hadoop2將資源管理功能從MapReduce框架中獨立出來,也就是現在的YARN模塊。

在沒有 YARN 之前,是一個集群一個計算框架。比如:MapReduce 一個集群、Spark 一個集群、HBase 一個集群等。

造成各個集群管理複雜,資源的利用率很低;比如:在某個時間段內 Hadoop 集群忙而Spark 集群閒著,反之亦然,各個集群之間不能共享資源造成集群間資源並不能充分利用。

並且採用"一個框架一個集群"的模式,也需要多個管理員管理這些集群, 進而增加運維成本;而共享集群模式通常需要少數管理員即可完成多個框架的統一管理; 隨著數據量的暴增,跨集群間的數據移動不僅需要花費更長的時間,且硬體成本也會大大增加;而共享集群模式可讓多種框架共享數據和硬體資源,將大大減少數據移動帶來的成本。

解決辦法:

將所有的計算框架運行在一個集群中,共享一個集群的資源,按需分配;Hadoop 需要資源就將資源分配給 Hadoop,Spark 需要資源就將資源分配給 Spark,進而整個集群中的資源利用率就高於多個小集群的資源利用率;

2、 YARN的基本構成

Master/Slave 結構,1 個ResourceManager(RM)對應多個 NodeManager(NM);YARN 由 Client、ResourceManager、NodeManager、ApplicationMaster (AM)組成;Client 向 RM 提交任務、殺死任務等;

AM由對應的應用程式完成;

每個應用程式對應一個 AM,AM向RM申請資源用於在NM上啟動相應的 Task;NM 向 RM通過心跳信息:匯報 NM健康狀況、任務執行狀況、領取任務等;

RM:整個集群只有一個,負責集群資源的統一管理和調度

1)處理來自客戶端的請求(啟動/殺死應用程式);

2)啟動/監控 AM;一旦某個 AM 掛了之後,RM 將會在另外一個節點上啟動該 AM;

3)監控 NM,接收 NM的心跳匯報信息並分配任務到 NM去執行;一旦某個 NM掛了,標誌下該 NM 上的任務,來告訴對應的 AM 如何處理;

4)負責整個集群的資源分配和調度;

NM:整個集群中有多個,負責單節點資源管理和使用

1)周期性向 RM匯報本節點上的資源使用情況和各個 Container 的運行狀;

2)接收並處理來自 RM 的 Container 啟動/停止的各種命令;

3)處理來自 AM的命令;

4)負責單個節點上的資源管理和任務調度;

AM:每個應用一個,負責應用程式的管理

1)數據切分;

2)為應用程式/作業向 RM 申請資源(Container),並分配給內部任務;

3)與 NM通信以啟動/停止任務;

4)任務監控和容錯(在任務執行失敗時重新為該任務申請資源以重啟任務);

5)處理 RM發過來的命令:殺死 Container、讓 NM重啟等;

Container:對任務運行環境的抽象

1)任務運行資源(節點、內存、CPU);

2)任務啟動命令;

3)任務運行環境;任務是運行在Container中,一個Container中既可以運行AM也可以運行具體的 Map/Reduce/MPI/Spark Task;

3、 YARN的工作原理

1)用戶向 YARN 中提交應用程式/作業,其中包括 ApplicaitonMaster 程序、啟動ApplicationMaster 的命令、用戶程序等;

2)ResourceManager 為作業分配第一個 Container,並與對應的 NodeManager 通信,要求它在這個 Containter 中啟動該作業的 ApplicationMaster;

3 )ApplicationMaster 首 先 向 ResourceManager 注 冊 , 這 樣 用 戶 可 以 直 接 通 過ResourceManager 查詢作業的運行狀態;然後它將為各個任務申請資源並監控任務的運行狀態,直到運行結束。即重複步驟 4-7;

4)ApplicationMaster 採用輪詢的方式通過 RPC 請求向 ResourceManager 申請和領取資源;

5)一旦 ApplicationMaster 申請到資源後,便與對應的 NodeManager 通信,要求它啟動任務;

6)NodeManager 啟動任務;

7)各個任務通過 RPC 協議向 ApplicationMaster 匯報自己的狀態和進度,以讓ApplicaitonMaster 隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務;在作業運行過程中,用戶可隨時通過 RPC 向 ApplicationMaster 查詢作業當前運行狀態;

8)作業完成後,ApplicationMaster 向 ResourceManager 註銷並關閉自己;

4、 YARN的容錯性

ResourceMananger基於 ZooKeeper 實現 HA 避免單點故障;

NodeManager執行失敗後,ResourceManager 將失敗任務告訴對應的 ApplicationMaster;

由 ApplicationMaster 決定如何處理失敗的任務;

ApplicationMaster執行失敗後,由 ResourceManager 負責重啟;

ApplicationMaster 需處理內部任務的容錯問題;

RMAppMaster 會保存已經運行完成的 Task,重啟後無需重新運行。

5、 YARN的調度框架

1、雙層調度框架

1)ResourceManager 將資源分配給 ApplicationMaster;

2)ApplicationMaster 將資源進一步分配給各個 TASK;

2、基於資源預留的調度策略

1)資源不夠時,會為 Task 預留,直到資源充足;描述:當一個 Task 需要 10G 資源時,各個節點都不足 10G,那麼就選擇一個節點,但是某個 NodeManager上只有 2G, 那麼就在這個 NodeManager上預留, 當這個 NodeManager上釋放其他資源後,會將資源預留給 10G 的作業,直到攢夠 10G 時,啟動 Task;缺點:資源利用率不高,要先攢著,等到 10G 才利用,造成集群的資源利用率低;

2)與"all or nothing"策略不同(Apache Mesos)描述:當一個作業需要 10G 資源時,節點都不足 10G,那就慢慢等,等到某個節點上有 10G 空閒資源時再運行,很可能會導致該 Task 餓死。

相關焦點

  • Hadoop資源管理與作業調度框架yarn剖析
    提到Hadoop,大家可能首先想到的是Hdfs存儲、mapreduce離線計算,Hadoop2.x推出yarn(Yet Another Resource Negotiator)之後,hadoop已搖身一變為資源管理與作業調度平臺,基於yarn可在hadoop集群上可運行mepreduce(離線計算
  • 更快、更強——解析Hadoop新一代MapReduce框架Yarn
    編者按:對於業界的大數據存儲及分布式處理系統來說,Hadoop 是耳熟能詳的卓越開源分布式文件存儲及處理框架,對於 Hadoop 框架的介紹在此不再累述,隨著需求的發展,Yarn 框架浮出水面, @依然光榮復興的 博客給我們做了很詳細的介紹,讀者通過本文中新舊 Hadoop MapReduce 框架的對比,更能深刻理解新的 yarn 框架的技術原理和設計思想
  • 銀興智能:助力廣發銀行打造Hadoop資源管理平臺
    據深圳銀興智能數據有限公司(簡稱:銀興智能)介紹,隨著廣發銀行大數據平臺hadoop集群應用場景越來越多,研發中心、數據中心、卡中心和分行等部門均在大數據平臺上進行數據開發和數據分析,由於數據開發和分析的場景各不相同,使用和購置的資源也不同。
  • 大數據YARN核心知識點來襲
    01 我們一起學大數據大家好,今天分享的是大數據YARN的核心知識點,老劉儘量用通俗易懂的話來講述YARN知識點,爭取做到大家看完後能夠用口語化的形式將它們表達出來,做到真正的看完就會!(如果覺得老劉寫的不錯,給老劉點個讚)02 YARN核心知識點第1點:什麼是YARN?
  • 資源管理與調度系統Yarn
    Introduction在大數據時代,為了存儲和處理海量數據,出現了豐富的技術組件,比如Hive、Spark、Flink、JStorm等,也有著數量眾多類型紛雜的應用程式和服務,比如離線作業、流式作業等,為了避免服務和服務之間、任務和任務之間的相互幹擾,傳統的做法是為每種類型的作業或者服務搭建一個單獨的集群。
  • 面試「大動作」!YARN琢磨不透?一篇文章帶你玩轉YARN!
    一、hadoop yarn 簡介Apache YARN(Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群資源管理系統。用戶可以將各種服務框架部署在 YARN 上,由 YARN 進行統一地管理和資源分配。二、YARN架構1.
  • Yarn 的內存分配管理機制及相關參數配置
    1.1 RM的內存資源配置, 配置的是資源調度相關 RM1:yarn.scheduler.minimum-allocation-mb=1G #單個容器可申請的最小內存RM2:yarn.scheduler.maximum-allocation-mb=4G #單個容器可申請的最大內存l RM2 必須大於等於 RM1l 一旦設置,不可動態改變1.2 NM的內存資源配置
  • Apache Hadoop 3.0.0 GA 正式發布,要求 Java 8
    更多關於YARN Timeline Service v.2的知識請參見http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-yarn/hadoop-yarn-site/TimelineServiceV2.htmlShell腳本重寫Hadoop的Shell腳本被重寫解決了之前很多長期存在的bug,並且引入了一些新的特性。
  • Hadoop是低成本的大數據解決方案?別逗了!
    Hadoop是當下流行的大數據並行計算體系,橫向擴展、生態圈成熟等一直是它的主要特點。但這些特點當中,絕對不包含廉價。 可能你認為的低成本,實際上只是硬體和軟體授權成本,而不是總體成本。在學習成本、開發成本、管理成本上Hadoop並不總是佔優。現在伴隨公有雲技術的成熟,Hadoop甚至連硬體成本也不佔優了。
  • 大數據開發前要做什麼準備?8臺Hadoop伺服器進行集群規劃前配置
    安裝個CentOS Linux 8開始大數據開發2、Linux內核怎麼升級?升級有什麼好處?CentOS8升級內核並開啟BBR手裡有一臺3年前的伺服器Dell R620,上面安裝了兩路CPU型號是Xeon E5-2603 V2 1.8GHz,內存沒有插滿只有64GB,8個硬碟位插滿共8塊SAS硬碟。
  • 深入對比數據科學工具箱: SparkR vs Sparklyr
    yarn-client/yarn-cluster 模式需要設置環境變量 Sys.setenv("HADOOP_CONF_DIR"="/etc/hadoop/conf")連接 Hive 需要提供 Hive 連結配置, 在 spark-connection 初始化時指定對應 hive-site.xml 文件
  • 好程式設計師大數據培訓分享Hadoop技術優缺點
    好程式設計師大數據培訓分享Hadoop技術優缺點,目前我們正被數據包圍,全球43億部電話、20億位網際網路用戶每秒都在不斷地產生大量數據,人們發送簡訊給朋友、上傳視頻、用手機拍照、更新社交網站的信息、轉發微博、點擊廣告等,使得機器產生和保留了越來越多的數據。
  • hadoop入門基礎教程操作篇
    關於hadoop的分享此前一直都是零零散散的想到什麼就寫什麼,整體寫的比較亂吧。最近可能還算好的吧,畢竟花了兩周的時間詳細的寫完的了hadoop從規劃到環境安裝配置等全部內容。寫過程不是很難,最煩的可能還是要給每一步配圖,工程量確實比較大。
  • hadoop基礎知識介紹_hadoop是什麼語言開發的_hadoop能做什麼
    hadoop大數據處理的意義 Hadoop得以在大數據處理應用中廣泛應用得益於其自身在數據提取、變形和加載(ETL)方面上的天然優勢。Hadoop的分布式架構,將大數據處理引擎儘可能的靠近存儲,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結果可以直接走向存儲。Hadoop的MapReduce功能實現了將單個任務打碎,並將碎片任務(Map)發送到多個節點上,之後再以單個數據集的形式加載(Reduce)到數據倉庫。 hadoop能做什麼?
  • 史上最牛YARN介紹
    YARN 是一個資源調度平臺,負責為運算程序提供伺服器運算資源,相當於一個分布式的操 作系統平臺,而 MapReduce 等運算程序則相當於運行於作業系統之上的應用程式Yarn的組成1) ResourceManager(RM)控制整個集群並管理應用程式向基礎計算資源的分配
  • Spark on Yarn學習之Yarn運行過程和Yarn應用的實現
    提交應用及其使用到的資源用戶向 YARN 中( RM )提交應用程式,其中包括 ApplicationMaster 程序、啟動 ApplicationMaster 的命令、用戶程序等。客戶端將應用程式所需的文件資源 ( 外部字典、 JAR 包、二進位文件等 ) 提交到 HDFS.2.
  • hadoop開發應用實例_hadoop應用開發技術實例詳解 - CSDN
    hadoop是什麼?hadoop能有哪些應用?hadoop和大數據是什麼關係?下面我們將圍繞這幾個問題詳細闡述。hadoop是什麼?Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
  • hadoop最新發行穩定版:DKHadoop版本介紹
    Hadoop對於從事網際網路工作的朋友來說已經非常熟悉了,相信在我們身邊有很多人正在轉行從事hadoop開發的工作,理所當然也會有很多hadoop入門新手。Hadoop開發太過底層,技術難度遠比我們想像的要大,對新手而言選擇一個合適的hadoop版本就意味著上手更快!
  • 水質監測實驗室管理系統——數據管理模塊
    目前,國內很多自來水公司水質檢測點位多、採集數據量大,都是各站點工作人員通過手工填寫表格的形式抄送提交,歷史檢測數據均以word或excale表格形式存儲,各個環節的操作數據沒有閉環日誌記錄,存儲方式不安全、極易造成丟失、損壞,數據上報、傳送、查閱、調取、統計工作繁冗不便,因此,智能化自來水公司實驗室檢測數據信息管理系統不僅解決了工作中面臨的實際問題