1. 程式人生 > >大資料求索(2):yarn的配置與使用

大資料求索(2):yarn的配置與使用

yarn的架構

1) Resourcemanager: RM

  • 整個叢集同一時間提供服務的RM只有一個,負責叢集資源的統一管理和排程
  • 處理來自客戶端的請求,比如提交一個job,殺死一個job等
  • 監控NM,一旦某個NM掛了,那麼該NM上執行的任務需要告訴AM來如何進行排程
  1. 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-1

那麼,表示yarn啟動成功。

yarn的使用

通過yarn的圖形化介面方式,我們可以很方便的管理叢集。

通過觀察yarn的介面,我們很容易可以看到正在執行的、已經結束的、失敗的、被殺掉的等job的狀態以及叢集的狀態,比如叢集記憶體、存活的結點等狀態,非常方便。

yarn-2

在執行一個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的執行情況和日誌,這裡就不多做介紹了。

可能出現的問題

  1. 瀏覽器訪問打不開

    • 檢查防火牆是否關閉、埠是否佔用、hosts檔案是否正確,一般都是這三種
    • 檢查log,看是否有報錯
  2. 執行任務報錯

    這裡需要仔細檢視日誌,檢視報錯原因,常見的報錯是缺少jar或者引數不對