從頭學習大數據培訓課程 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如何實現?
