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