1. 程式人生 > >YARN(Hadoop)學習筆記(2)

YARN(Hadoop)學習筆記(2)

  一、關於DistributedShell

     DistributedShell是一個可以分散式執行shell命令的應用程式,可以並行執行使用者提供的shell指令碼和shell命令。

    Dshell是yarn(我用的是hadoop-2.3.0版本和hadoop-2.4.0版本)自帶的執行例項。它在share/hadoop/yarn/目錄下,是一個叫做hadoop-yarn-applications-distributedshell-2.3.0.jar的jar包。

     /share目錄存放了hadoop各個模組,如yarn,HDFS,MapReduce編譯後生成的jar包,dshell例項的jar包就位於這個目錄之下。

    我部署的hadoop是在使用centOS的伺服器上的,截圖如下,黃色框部分是所說的dshell的jar包

    

二、執行DistributedShell

    執行dshell之前,需要確保部署的cluster已經啟動。

    如果沒有啟動可以在作為master的server上,使用指令碼/sbin/start-all.sh或者/sbin/start-dfs.sh以及/sbin/start-yarn.sh分別啟動。通過jps命令檢視幾個重要的程序是否已經啟動,其中RM和NM是必須要有的,否則執行時候會出錯,或者沒法成功執行dshell

    使用hadoop jar指令碼執行“一、關於DistributedShell ”中提到的Dshell包。


     hadoop jar 是/bin/目錄下的一個hadoop shell,用於向Client提交作業。它的用法是 hadoop jar <jar> [mainClass] args...其中<jar>表示需要提交的jar包名字。 [mainClass]表示main class的名字,可以不用輸入。args是main class輸入參量。

     /bin/存放了hadoop最基本的使用指令碼和管理指令碼。這些指令碼是?sbin/目錄下其他指令碼的實現基礎,使用者可以通過這些scripts直接使用和管理hadoop cluster。

     輸入如下黃色框中的命令,就可以執行dshell了。其中輸入\和enter可以實現換行輸入。

 

   然後根據下面提示的指令碼使用說明就可以使用dshell指令碼了。

   舉個例子,使用-jar包含AM實現的dshell jar包,使用-num_containers分配7個container,使用-container_memory  270指定shell command的container記憶體大小為270MB,執行的結果如截圖顯示,使用-shell_command ls通過shell命令進行檢視。


   注意如果一個NM都沒有啟動,圖上的numNodeManagers=0,那麼dshell將不能執行成功。所以在執行dshell之前務必要保證cluster中至少有一個啟動的nodemanager。


   如果出現上面圖中黃色框中的日誌記錄,則表示作業已經提交運行了。


   出現上面截圖中黃色框中的日誌記錄表明dshell已經成功執行!