2015年10月9日 星期五

[ Big Data 研究 ] 07 建置 YARN 分散式運算系統 - 新增與移除 NodeManager

Introduction
在第六章我們知道如何新增一台 DataNode 運算主機, 以擴充 HDFS 分散式檔案系統的儲存空間, 並提升資料區塊和副本配置的分散率, 進而提升資料讀取的效能, 且新增的機器還可以單純的執行 HDFS 的功能即可, 因此新增的機器在硬體與規格上可著重儲存空間的大小與效能.

既然可以新增一台機器來擴充 HDFS 的空間, 當然也可以新增機器來提升 YARN 的運算資源與效能, 而新增的機器也可單純指定為 NodeManager, 所以依據需求, 這台機器在硬體規格上就可以著重在運算資源的效能, 如強大的 CPU 與較多的記憶體.

新增與移除 NodeManager

新增 NodeManager
NodeManager 的新增方式與 DataNode 大致相同, 唯一的差別只有在 "slave" 檔案的設定. 由於新增的 DataNode 主要是用來擴充 HDFS 的儲存空間, 故需要在 "slaves" 檔案中寫入新增的主機名稱, 不過若新增的主機只是要用來增加 YARN 的運算資源, 那就並不需要針對 slaves" 檔案做任何的增修了, 只要確認其基本運作與連線正常, 就算完成新增 NodeManager 的設定了.

這邊以 dn03 運算主機作為新增的 NodeManager, 在測試 dn03 是不是能夠正確的加入 YARN 運算資源之前, 我們必須先確認 Hadoop 的系統以及各個角色都有正常在運作. 在 nn 運算主機的終端機輸入 HDFS 系統的 "dfsadmin" 管理指令查看 HDFS 的運作狀態:
ubuntu@nn:~$ hdfs dfsadmin -report
...
Live datanodes (2):

Name: 172.16.1.210:50010 (dn01)
Hostname: dn01
Rack: /16/1
...

在第六章我們已經將 dn03 運算主機從 HDFS 系統的白名單移除, 所以在上面只會看到 dn01 與 dn02 運算主機執行 DataNode 的服務. 接著在 rm 運算主機終端機輸入以下指令確認目前只有dn01 與 dn02 運算主機在 YARN 系統資源中:
ubuntu@rm:~$ yarn node -all -list
...
Total Nodes:2
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
dn02:54093 RUNNING dn02:8042 0
dn01:57407 RUNNING dn01:8042 0

確定 Hadoop 系統以及各個角色都有正常運作後, 我們先使用 SSH 連線到 dn03 運算主機, 並執行以下指令來啟動上面的 NodeManager 服務:
ubuntu@dn03:~$ yarn-daemon.sh start nodemanager
starting nodemanager, logging to /tmp/yarn-ubuntu-nodemanager-dn03.out
ubuntu@dn03:~$ jps
2190 Jps
2090 NodeManager

ubuntu@rm:~$ yarn node -all -list
...
Total Nodes:3
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
dn02:54093 RUNNING dn02:8042 0
dn03:60306 RUNNING dn03:8042 0
dn01:57407 RUNNING dn01:8042 0

當看到 dn03 運算機出現, 就表示 dn03 已經加入到 YARN 運算資源之內且可以開始負擔資料運算工作了. 至於要怎樣把 dn03 從 YARN 的運算資源中移除, 只需要在該運算機的終端機視窗內輸入下面命令即可把該運算機從 YARN 的運算資源中移除:
ubuntu@dn03:~$ yarn-daemon.sh stop nodemanager
stopping nodemanager
ubuntu@dn03:~$ jps
2227 Jps

管理 NodeManager 的異動
雖然可以利用上面介紹的方式新稱與移除 NodeManager 已改變 YARN 的運算資源, 但在實際應用上並不建議上述的方式來異動 NodeManager 與管理 DataNode 運算主機, 我們必須採用 "管理" 的角度來管理 NodeManager 的異動, 不然網路隨便一台機器都可以進入 YARN 的管轄之內, 以系統安全來說並不太洽當, 如同第六章管理 DataNode 運算主機的方式一樣, 我們也可以撰寫 YARN 的 "白名單", 也就是 YARN 可以使用的運算資源名單.

首先使用下面命令建立 YARN 的白名單 "yarn.allow":
root@ubuntu:~# vi /opt/hadoop-2.5.2/etc/hadoop/yarn.allow // 在 Host 主機

目前我們只允許 dn01 與 dn02 運算主機加入 YARN 運算資源之內, 不過我們還必須在 "yarn-site.xml" 檔案中寫入白名單的檔案存放位置:
# vi /opt/hadoop-2.5.2/etc/hadoop/yarn-site.xml

# lxc-console -n rm // 登入 rm 主機
ubuntu@rm:~$ yarn-daemon.sh stop resourcemanager
stopping resourcemanager
ubuntu@rm:~$ yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /tmp/yarn-ubuntu-resourcemanager-rm.out
ubuntu@rm:~$ jps
2209 ApplicationHistoryServer
3563 Jps
3321 ResourceManager

ubuntu@rm:~$ yarn node -all -list
...
Total Nodes:2
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
dn02:53256 RUNNING dn02:8042 0
dn01:33099 RUNNING dn01:8042 0

此時就算去 dn03 啟動 nodemanager, 也不會在 YARN 的運算資源中看到 dn03 了:
ubuntu@rm:~$ ssh dn03
ubuntu@dn03:~$ yarn-daemon.sh start nodemanager
starting nodemanager, logging to /tmp/yarn-ubuntu-nodemanager-dn03.out
ubuntu@dn03:~$ jps
2820 NodeManager
2896 Jps

ubuntu@dn03:~$ exit
ubuntu@rm:~$ yarn node -all -list // 不會看到 dn03
...
Total Nodes:2
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
dn02:53256 RUNNING dn02:8042 0
dn01:33099 RUNNING dn01:8042 0

This message was edited 9 times. Last update was at 09/10/2015 21:03:50

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...