標籤:

從頭學習大數據培訓課程 Hadoop 系列教程(七)yarn 原理以及日常使用

1. yarn(Yet Another Resource Negotiator)的優點

(1).提高集群資源的利用率。

(2).對更多大數據處理工具的支持,從而使hadoop更像一個平台。

(3).在yarn上使用的數據處理工具是安裝在客戶端,而不是安裝在整個集群上,所以數據處理工具更容易升級。

2. yarn的系統結構

ResourceManager、NodeManager、ApplicationMaster、Container、Scheduler

以下內容回帖刷新可見………………

3. yarn的主要配置

/usr/local/hadoop/etc/hadoop

yarn-site.xml

yarn-env.sh

4. 啟動yarn

先啟動zookeeper

./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh start

啟動yarn在nn1上

start-yarn.sh

查看各節點的進程信息是否有resourceManager和nodemanager

./ssh_all.sh jps

http://nn1.hadoop:8088 看到yarn的主頁面

看任務運行情況

5. yarn的ha

yarn-daemon.sh start resourcemanager 在nn2上再啟動一個yarn

yarn rmadmin -getServiceState

查看ZK

/usr/local/zookeeper/bin/zkCli.sh -server nn1.hadoop:2181,nn2.hadoop:2181,s1.hadoop:2181

6. yarn的ha配置

在yarn-site.xml裡面

rm1的配置

rm2的配置

7. yarn的調度器

8. yarn調度器的配置

yarn-site.xml

fair-scheduler.xml

9. yarn調度器的修改

tail -f yarn-hadoop-resourcemanager-nn1.hadoop.log 檢測日誌

vim fair-scheduler.xml 修改配置

檢測日誌查看自動載入過程

tail -f yarn-hadoop-resourcemanager-nn1.hadoop.log

修改前的狀態

修改完查看配置是否生效

10. yarn提交任務的過程

(1).用戶向YARN中提交應用程序.

(2).ResourceManager為該應用程序分配第一個Container,要求它在這個Container中啟動應用程序的ApplicationMaster。

(3).ApplicationMaster首先向ResourceManager註冊,目的是讓用戶可以直接通過ResourceManager查看應用程序的運行狀態,然後它將為各個任務申請資源,並監控它的運行狀態,直到運行結束

(4).ApplicationMaster向ResourceManager申請和領取資源(通過RPC協議)。

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

(6).NodeManager啟動任務。

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

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

11. 在yarn上運行一個應用

start-dfs.sh 啟動HDFS

find /usr/local/hadoop/share/ -name "examp" 在/usr/local/hadoop/share/下查找包含examp的文件

hadoop fs -mkdir -p /user/hadoop/input/ 在HDFS上創建/user/hadoop/input/目錄

touch /tmp/test 生成一個測試文件

vim /tmp/test 編輯測試文件內容

hadoop fs -put /tmp/test /user/hadoop/input/ 把測試文件上傳到剛才在HDFS上創建的目錄

hadoop jar命令調用的java類地址

運行hadoop jar命令

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /user/hadoop/input /user/hadoop/output 提交wordcount任務

然後在yarn的web頁面上可以查看已提交的任務

yarn-daemon.sh start proxyserver 啟動yarn日誌代理服務

mr-jobhistory-daemon.sh start historyserver 啟動mr的jobhistory服務

然後點擊這裡查看日誌

任務狀態:正在向am註冊

通過查看日誌發現任務被kill了

通過調整MR內存參數 在配置文件mapred-site.xml里

hadoop fs -rmr /user/hadoop/input 先刪除hdfs目錄

再重新提交JOB,任務運行成功

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /user/hadoop/input /user/hadoop/output

把運行結果下載到本地 hadoop fs -get /user/hadoop/output/part-r-00000 /tmp/

vim part-r-00000 查看任務運行的結果

hadoop自帶的wordcount例子的源碼位置

可以使用JD-JUI反編譯查看

12. 啟動一個完整的集群

start-all.sh nn1 全部啟動

yarn-daemon.sh start proxyserver 在nn1上

mr-jobhistory-daemon.sh start historyserver 在nn1上

yarn-daemon.sh start resourcemanager nn2上啟動resourcemanager用於yarn的HA

以上是全部啟動流程

stop-all.sh nn1 全部停止,historyserver不會停止因為它是mapreducer程序使用的,所以hadoop全部停止時不會去操作

更多學習資料:海牛大數據社區


推薦閱讀:

Azkaban二次開發3-Hadoop任務提交方式改造
HDFS上小數據如何能負載均衡?
怎麼看hadoop Summit 2015 and Spark summit 2015?
為什麼很多公司的大數據相關業務都基於 Hadoop 方案?
分散式資料庫下子查詢和join等複雜sql如何實現?

TAG:大数据 | Hadoop |