大資料求索(2):yarn的配置與使用
yarn的架構
1) Resourcemanager: RM
- 整個叢集同一時間提供服務的RM只有一個,負責叢集資源的統一管理和排程
- 處理來自客戶端的請求,比如提交一個job,殺死一個job等
- 監控NM,一旦某個NM掛了,那麼該NM上執行的任務需要告訴AM來如何進行排程
- NodeManager:NM
- 整個叢集中可以有多個,負責結點自己本身的資源管理和使用
- 定時向RM彙報結點自身的資源使用情況
- 接收並處理來自RM的各種命令,然後啟動Container
- 處理來自AM的命令
3)ApplicationMaster:AM
- 每個應用程式對應一個:MR、Spark等,負責應用程式的管理
- 為應用程式向RM申請資源(core、memory等),分配給內部task
- 需要與NM通訊:start/stop task,task是執行在container裡面,AM也是執行在container裡面
4)Container:
封裝了CPU、Memory等資源的一個容器,是一個任務執行環境的抽象
5)Client
提交作業、查詢作業進度、殺死作業等
yarn的配置
在搭建好HDFS以後,yarn的配置就非常簡單了,這裡還是搭建的偽分散式,只需要修改兩個配置檔案即可
修改mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
這個檔案的作用是啟用yarn
修改yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>wds</value>
</property>
這樣最基本的yarn就配置好了,接下來啟動yarn測試
啟動yarn
在sbin目錄下,有啟動yarn的指令碼start-yarn.sh,直接執行sbin/start-yarn.sh即可
啟動以後有兩種方式驗證
第一種,通過jps命令檢視程序,如果包含NodeManager和ResourceManager兩個程序,那麼yarn便是啟動成功了。
第二種,通過瀏覽器,這種方式也更為直觀。在瀏覽器輸入http://ip:8088,顯示頁面如下圖所示
那麼,表示yarn啟動成功。
yarn的使用
通過yarn的圖形化介面方式,我們可以很方便的管理叢集。
通過觀察yarn的介面,我們很容易可以看到正在執行的、已經結束的、失敗的、被殺掉的等job的狀態以及叢集的狀態,比如叢集記憶體、存活的結點等狀態,非常方便。
在執行一個job以後,我們還可以方便的檢視job的log。這裡預設是沒有啟用,需要配置,叫做JobHistory,後面在做介紹。
提交任務到yarn上執行
執行方式為 hadoop jar xxx.jar 引數
所以,在本地編寫好程式以後,需要打包到伺服器上執行,也可以執行hadoop自帶的例子,這裡以pi的計算為例
在目錄share/hadoop/mapreduce下面有很多jar包,有一個jar包叫做hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar,裡面封裝了很多官網提供的例子,可以使用
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar --help
檢視執行引數
選擇pi 並執行
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3
便可以提交一個MapReduce任務到yarn上執行了,在web端可以看到job的執行情況和日誌,這裡就不多做介紹了。
可能出現的問題
-
瀏覽器訪問打不開
- 檢查防火牆是否關閉、埠是否佔用、hosts檔案是否正確,一般都是這三種
- 檢查log,看是否有報錯
-
執行任務報錯
這裡需要仔細檢視日誌,檢視報錯原因,常見的報錯是缺少jar或者引數不對