YARN 分散式資源調度

相關文章:hadoop分散式文件系統HDFS;Hadoop的一些基本命令使用

資源調度框架YARN

# YARN產生背景

# YARN誕生/概述

# YARN架構

# YARN執行流程

# YARN的環境搭建(單節點偽分散式)

# 提交作業到YARN上執行

YARN產生背景

1、MapReduce1.x存在的問題:單點故障&節點壓力大不易擴展

Hadoop1.x時:

MapReduce:Master/Slave架構,1個JobTracker帶多個TaskTracker

如上圖整個集群只有一個jobtracker,就是說他是存在單點故障的,只要他掛了,那麼整個架構就沒有辦法運行了,而且這個jobtracker要接收太多的請求,如上圖的箭頭,來自tasktracker,client,隨著集群擴展,節點越來越多,jobtracker必然成為一個瓶頸,並且這個jobtracker他的任務非常繁重,資源管理任務分配還有作業調度,然後呢,我們整個mapreduce1.x的架構僅僅支持mapreduce作業,如果想把spark,storm作業跑到這上面是不行的,這就是mapreduce1.x存在的種種問題。

2、資源利用率&運維成本

假設現在沒有YARN,你有hadoop集群,你的spark集群,你的MPI集群,這樣你會存在好多個集群,會造成集群管理比較複雜,而且資源的利用率比較低,看上圖,每個集群空閑時間不一,繁忙時間不一,這樣你搞多個集群,集群之間是有很多空閑的,這個資源的利用率就很低,而且每個集群之間沒法共享資源,而且運維小夥伴需要啊搭建多個集群,其實還有如果說我們的數據存放在hdfs上,也就是hadoop集群之上,當我們的spark要對hadoop上的數據做操作計算的時候你需要跨網路把數據移過來,要跨集群移動數據,這個消耗是極其大的,不僅是硬體的成本還有網路資源io的開銷那都是很大很大的。

那麼有沒有一種模式,在一個集群上運行,hadoop,spark,mpi等等共享一個集群上的數據,共享一個集群的資源,這樣會大大減少我們的數據移動帶來的成本以及提高資源利用率,

如上圖,把三個集群合併到一個上面,就是一個共享集群(shared cluster),大家都跑在這上面,用同樣的資源或者說用同樣的調度框架來調度資源,就會減少很多跨集群的數據移動,進而提升框架計算能力。

基於以上所述就催生了YARN的誕生。

YARN的誕生/概述

1、通用的資源管理系統

2、為上層應用提供統一的資源管理和調度

這張圖從下面開始,HDFS2其實就是表示hadoop2.x,他是做存儲的,往上看有一個YARN,他就是做集群的資源管理的(cluster resource management),再往上看,對於批處理我們可以用mapreduce這種執行引擎,對於互動式的我們可以使用tez,在線的我們可以使用hbase,流處理可以採用storm,圖計算用giraph,內存式的計算我們可以使用spark。。。。。現在在我們YARN之上我們不可以執行不同類型的作業,在mapreduce1.x他僅僅只能運行mapreduce的執行引擎,有了YARN之後就可以執行不同類型的計算框架,我們可以把YARN理解為操作系統級別的資源調度框架,可以讓更多的計算框架mapreduce,spark,storm等等都運行在同一個集群裡面,而且不同的計算框架可以共享同一個hdfs上的數據,享受整體的資源調度。

xxx on YARN的好處:與其他計算框架共享集群資源,按照資源需要分配,比如說你一個作業你要多少資源就給你申請多少資源,進而提高集群資源的利用率。

YARN架構(Yet Another Resource Negotiator)

構成

1、Resource Manager:

整個集群同一時間提供服務的RM只有一個,負責集群資源的統一管理和調度,

處理客戶端的請求,比如提交/殺死作業,監控我們的NM,一旦某個NM掛了,

那麼該NM上運行的任務需要告訴我們的AM來進行處理。

2、NodeManage

整個集群有多個,負責自己本身節點資源管理和使用,

定時向RM彙報本節點的資源使用情況,讓RM知道節點情況,

方便RM調度作業到可用的機器上。處理來自AM的命令,

單個節點的資源管理由NM自己處理

3、ApplicationMaster: AM

每個應用程序對應一個,比如MR、Spark都對應一個AM,AM負責應用程序的管理

為應用程序向RM申請資源(core、memory),就是說要通過AM向RM申請資源,

分配給內部task

需要與NM通信:啟動/停止task,task運行在container裡面,AM也是運行在container裡面

4、Container

封裝了CPU、Memory等資源的一個容器

是一個任務運行環境的抽象

5、Client

提交作業

查詢作業的運行進度

殺死作業

YARN執行流程

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

2、ResourceManager為該應用程序分配第一個Container,並與對應的NodeManager通信,要求它在整個Container中啟動應用程序的ApplicationMaster;

3、ApplicationMaster首先向ResourceManager註冊,這樣用戶可以直接通過ResourceManager查看應用程序的運行狀態,然後它將為各個任務申請資源,並監控它的運行狀態,直到運行結束,即重複步驟4~7;

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

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

6、NodeManager為任務設置好運行環境(包括環境變數、jar包、二進位程序等)後,將任務啟動命令寫到一個腳本中,並通過運行該腳本啟動任務;

7、各個任務通過某RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。

在應用程序運行過程中,用戶可以隨時通過RPC向ApplicationMaster查詢應用程序的當前運行狀態;

8、應用程序運行完成後,ApplicationMaster向ResourceManager註銷並關閉自己。

註:

這是一個通用流程,如果是mapreduce那就對應的mapreduce的AM,spark就對應spark

的AM。所以YARN是一個可以運行不同作業的一個操作系統,這個系統上面可以跑很多東西,可以理解為你的電腦上可以跑word可以跑excel可以跑ppt,可以對應來理解。

從圖上看起來RM還是存在單點故障的,但是不要緊,我們有對應的策略實現一個HA(雙機集群(HA)系統簡稱),如果RM掛掉,可以自動進行切換保證YARN永遠提供服務。

YARN的環境搭建(單節點偽分散式)

使用版本:hadoop-2.6.0-cdh5.7.0

配置文件:

yarn-site.xml

mapred-site.xml

首先進入hadoop安裝目錄,進入etc下面的hadoop,找到這兩個配置文件打開並進行修改

1、mapred-site.xml

<property> <name>mapreduce.framework.name</name> <value>yarn</value></property>

2、yarn-site.xml

<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value></property>

啟動YARN並驗證

進入安裝目錄下額sbin目錄下執行start-yarn.sh來啟動YARN

啟動之後輸入jps,查看運行情況,有ResourceManage和NodeManage說明啟動成功,否則啟動出錯,需要打開日誌文件查看錯誤信息。日誌文件就是啟動時 logging to後面的.out文件,把.out改成.log就可以用vim或者gedit打開了。

瀏覽器也可以驗證,打開瀏覽器輸入 :你的機器名稱:8088 比如我的是Linux:8088

停止yarn

在sbin目錄下輸入

$ ./stop-yarn.sh

即可關閉yarn

提交作業到YARN上執行

這裡我們使用hadoop提供的測試用例來演示提交作業流程

首先在安裝目錄找到share文件夾下的hadoop文件夾,進去看到mapreduce

進去就看到很多文件,找到其中的hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar

然後使用 hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar來提交,

輸入之後會發現這個包裡面有好多程序,會要求你選擇一個執行,下面我們就選擇pi這個程序來執行。

如上圖,執行完畢,我們再去瀏覽器上看一下

至此,作業提交完畢!

這裡容易出現一個錯誤,就是java.net.connectexception: 拒絕連接的這種錯誤,

有很多情況應該,比如我上面就出了這個錯,我重啟系統就可以了,在網上應該有很多種情況並且有對應的解決方法,如果遇到這個錯誤,不要急,網上解決方案非常多非常詳細,針對各種情況的!

------------------------------------------------------------------

關於YARN 分散式資源調度就寫到這裡了!


推薦閱讀:

人工智慧和機器學習會逐漸取代金融和數據分析師嗎?
女生適合做數據分析師嘛?

TAG:数据分析 | 大数据 | 数据分析师 |