MapReduce的執行平臺—YARN快速理解
mapreduce程式應該是在很多機器上並行啟動,而且先執行maptask,當眾多的maptask都處理完自己的資料後,還需要啟動眾多的reduce task,這個過程如果用使用者自己手動排程不太現實,需要一個自動化的排程平臺——hadoop中就為執行mapreduce之類的分散式運算程式開發了一個自動化排程平臺——YARN。
YARN的基本概念
yarn是一個分散式程式的執行排程平臺
yarn中有兩大核心角色:
1、ResourceManager
接受使用者提交的分散式計算程式,併為其劃分資源
管理、監控各個Node Manager上的資源情況,以便於均衡負載
2、NodeManager
管理它所在機器的運算資源(cpu + 記憶體)
負責接受Resource Manager分配的任務,建立容器、回收資源
YARN的安裝
主節點:Resource Manager 1臺
從節點:Node Manager N臺
Resource Manager一般安裝在一臺專門的機器上
Node Manager應該與HDFS中的data node重疊在一起
修改配置檔案:
yarn-site.xml
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores <value>2</value> </property> |
然後複製到每一臺機器上
然後在hadoop1上,修改hadoop的slaves檔案,列入要啟動nodemanager的機器
然後將hadoop1到所有機器的免密登陸配置好
然後,就可以用指令碼啟動yarn叢集:
sbin/start-yarn.sh
停止:
sbin/stop-yarn.sh
啟動完成後,可以在windows上用瀏覽器訪問resourcemanager的web埠:
看resource mananger是否認出了所有的node manager節點
執行mapreduce程式
首先,為你的mapreduce程式開發一個提交job到yarn的客戶端類(模板程式碼):
l 描述你的mapreduce程式執行時所需要的一些資訊(比如用哪個mapper、reducer、map和reduce輸出的kv型別、jar包所在路徑、reducetask的數量、輸入輸出資料的路徑)
l 將資訊和整個工程的jar包一起交給yarn
然後,將整個工程(yarn客戶端類+ mapreduce所有jar和自定義類)打成jar包
然後,將jar包上傳到hadoop叢集中的任意一臺機器上
最後,執行jar包中的(YARN客戶端類)
[[email protected] ~]# hadoop jar wc.jarcn.edu360.hadoop.mr.wc.JobSubmitter