程式扎記: [ Big Data 研究 ] 07 建置 YARN 分散式運算系統 - 設定與初始化 YARN 分散式運算系統

標籤

2015年10月9日 星期五

[ Big Data 研究 ] 07 建置 YARN 分散式運算系統 - 設定與初始化 YARN 分散式運算系統

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.timeline-service.hostname" 指定 Timeline Server 位置; "yarn.timeline-service.generic-application-history.enabled" 讓 Timeline Server 紀錄 YARN 執行程式的相關資訊. 如程式有無執行成功, 程式執行的開始與結束時間等.

    YARN 執行資源的規劃
    YARN 與 HDFS 分散檔案系統一樣, 所有運作角色都只是個 Java 程式, 因此 YARN 同樣也需要設定每個角色執行時的記憶體大小, 以及 Log 檔的存放位置. 而這些設定可以在 "yarn-env.sh" 檔案中來完成. 輸入以下指令開啟並編輯該檔案:
    # vi /opt/hadoop-2.5.2/etc/hadoop/yarn-env.sh
    1. ...  
    2. #JAVA_HEAP_MAX=-Xmx1000m  
    3. JAVA_HEAP_MAX=-Xmx256m  
    4. ...  
    5. YARN_HEAPSIZE=256  
    6. ...  
    7. export YARN_RESOURCEMANAGER_HEAPSIZE=256  
    8. ...  
    9. export YARN_TIMELINESERVER_HEAPSIZE=256  
    10. ...  
    11. export YARN_NODEMANAGER_HEAPSIZE=256  
    12. ...  
    13. export YARN_LOG_DIR=/tmp  
    14.   
    15. default log directory & file  
    16. if [ "$YARN_LOG_DIR" = "" ]; then  
    17.   YARN_LOG_DIR="$HADOOP_YARN_HOME/logs"  
    18. fi  
    19. if [ "$YARN_LOGFILE" = "" ]; then  
    20.   YARN_LOGFILE='yarn.log'  
    21. 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 中
    1. 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


    沒有留言:

    張貼留言

    網誌存檔

    關於我自己

    我的相片
    Where there is a will, there is a way!