Introduction
YARN 不僅能對 Big data 進行快速運算, 也能支援多種運算模式, 這都是因為各個角色的互相配合才能辦到. 因此要啟動 YARN 就必須在 "
mapred-site.xml", "
yarn-site.xml" 與 "yarn-env.sh" 檔案中對這些角色進行設定.
設定 mapred-site.xml 檔案
在實體主機終端機輸入以下指令開啟 "mapred-site.xml" 檔案:
# cp /opt/hadoop-2.5.2/etc/hadoop/mapred-site.xml.template /opt/hadoop-2.5.2/etc/hadoop/mapred-site.xml
# vi /opt/hadoop-2.5.2/etc/hadoop/mapred-site.xml
上述設定說明 MapReduce 將由 YARN 來進行運算.
設定 yarn-site.xml 檔案
"
yarn-site.xml" 是 MapReduce, YARN, 與 Timeline Server 的運作設定檔, 輸入以下命令開啟此檔案進行編輯:
# vi /opt/hadoop-2.5.2/etc/hadoop/yarn-site.xml
"
yarn.nodemanager.aux-services" 是告訴 NodeManager 要額外啟用 Shuffle 服務; 而 "yarn.nodemanager.aux-services.mapreduce.shuffle.class" 則是設定真正要執行 shuffle 服務的 Java 程式. 接著輸入以下內容:
上面設定內容的 "
yarn.resourcemanager.hostname" 指定負責 ResourceManager 服務的運算主機, 並透過 "
yarn.resourcemanager.webapp.address" 的設定連結 ResourceManager 的服務; "
yarn.nodemanager.local-dirs" 則是 NodeManager 執行 Container 時所需要的資源檔儲存目錄. 接著繼續設定如下:
YARN 執行資源的規劃
YARN 與 HDFS 分散檔案系統一樣, 所有運作角色都只是個 Java 程式, 因此 YARN 同樣也需要設定每個角色執行時的記憶體大小, 以及 Log 檔的存放位置. 而這些設定可以在 "yarn-env.sh" 檔案中來完成. 輸入以下指令開啟並編輯該檔案:
# vi /opt/hadoop-2.5.2/etc/hadoop/yarn-env.sh
- ...
- #JAVA_HEAP_MAX=-Xmx1000m
- JAVA_HEAP_MAX=-Xmx256m
- ...
- YARN_HEAPSIZE=256
- ...
- export YARN_RESOURCEMANAGER_HEAPSIZE=256
- ...
- export YARN_TIMELINESERVER_HEAPSIZE=256
- ...
- export YARN_NODEMANAGER_HEAPSIZE=256
- ...
- export YARN_LOG_DIR=/tmp
-
- # default log directory & file
- if [ "$YARN_LOG_DIR" = "" ]; then
- YARN_LOG_DIR="$HADOOP_YARN_HOME/logs"
- fi
- if [ "$YARN_LOGFILE" = "" ]; then
- YARN_LOGFILE='yarn.log'
- fi
啟動 YARN 分散式運算系統
接著在啟動 YARN 服務前, 務必先啟動 HDFS 分散式檔案系統. 請在
nn 運算主機終端前使用下面指令啟動 HDFS:
# lxc-console -n nn // 目前 Host 主機 Console 時, 請登入 nn 運算主機.
ubuntu@nn:~$ start-dfs.sh // 啟動 HDFS
...
ubuntu@nn:~$ jps
9485 NameNode
9689 SecondaryNameNode
10432 Jps
// 接著可以使用 Ctrl+a , q 來回到 Host 主機
啟動 ResourceManager 與 NodeManager
完成 YARN 分散式運算系統的初步設定, 我們可以正式來啟動 YARN 中的 ResourceManager 與 NodeManager 了. 請輸入以下指令啟動
rm 運算主機並登入此運算主機:
# sudo lxc-start -n rm -d
# sudo lxc-console -n rm
// 登入 rm 主機
ubuntu@rm:~$ /opt/hadoop-2.5.2/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /tmp/yarn-ubuntu-resourcemanager-rm.out
dn02: Warning: Permanently added 'dn02,172.16.1.211' (ECDSA) to the list of known hosts.
dn02: starting nodemanager, logging to /tmp/yarn-ubuntu-nodemanager-dn02.out
dn01: starting nodemanager, logging to /tmp/yarn-ubuntu-nodemanager-dn01.out
ubuntu@rm:~$ jps // 確認 ResourceManager 服務起來
629 ResourceManager
893 Jps
ubuntu@rm:~$ ssh dn01
ubuntu@dn01:~$ jps // 確認 NodeManager 服務起來.
2251 Jps
1950 DataNode
2126 NodeManager
ubuntu@dn01:~$ exit
啟動 Timeline Server
只啟動 ResourceManager 與 NodeManager 還是無法使用 YARN 分散式運算系統來執行程式, 還必須啟動 Timeline Server 才行. 在
rm 運算主機輸入下面指令啟動它:
ubuntu@rm:~$ /opt/hadoop-2.5.2/sbin/yarn-daemon.sh start timelineserver
starting timelineserver, logging to /tmp/yarn-ubuntu-timelineserver-rm.out
ubuntu@rm:~$ jps -v | grep ApplicationHistoryServer // 確認 Timeline Server 服務起來
936 ApplicationHistoryServer -Dproc_timelineserver -Xmx256m -Dhadoop.log.dir=/tmp -Dyarn.log.dir=/tmp -Dhadoop.log.file=yarn-ubuntu-timelineserver-rm.log -Dyarn.log.file=yarn-ubuntu-timelineserver-rm.log -Dyarn.home.dir= -Dyarn.id.str=ubuntu -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/opt/hadoop-2.5.2/lib/native -Dyarn.policy.file=hadoop-policy.xml -Dhadoop.log.dir=/tmp -Dyarn.log.dir=/tmp -Dhadoop.log.file=yarn-ubuntu-timelineserver-rm.log -Dyarn.log.file=yarn-ubuntu-timelineserver-rm.log -Dyarn.home.dir=/opt/hadoop-2.5.2 -Dhadoop.home.dir=/opt/hadoop-2.5.2 -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/opt/hadoop-2.5.2/lib/native
測試 YARN 分散式運算系統
在啟動 YARN 分散式運算系統後, 我們可以使用 Hadoop 內建的測試程式 "hadoop-mapreduce-examples-2.5.2.jar" 來確認 MapReduce 是否完成了建置, 由於此程式是一個 jar 檔, 因此可以使用專門來處理 jar 檔的 "
hadoop jar" 指令來做測試. 請在
rm 主機上輸入下面指令:
ubuntu@rm:~$ vi ~/.bashrc // 將 Hadoop 執行檔路徑加入環境變數 PATH 中
- export PATH=/opt/hadoop-2.5.2/bin/:$PATH
ubuntu@rm:~$ hadoop jar /opt/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar pi 1 1
...
Job Finished in 6.155 seconds
Estimated value of Pi is 4.00000000000000000000
沒有留言:
張貼留言