最近在作Job調度管理的事情,打算利用zeus,因爲git上zeus版本久遠,目前公司的集羣是hadoop2.X的,須要改造,並看了下源碼。java
本文主要是從zeus代碼裏提取出來MapReduceJob的提交YARN集羣方式,簡化了一些沒必要要的過程,模擬了MapReduceJob的提交YARN集羣的過程。linux
我將簡化的工程放到github上,相見git
從設計角度出發,要想將保護job做業的jar包提交到集羣,須要分離調度,和具體job二部分。因此簡化後的工程包括mrjobsubmit和wordcount。github
wordcount是完成對hdfs文件的單詞計數的job的簡單示例。apache
mrjobsubmit是調度部分windows
從技術角度出發,調度須要使用反射機制來調用可能的JOB,相見mrjobsubmit工程中的MapReduceMain類,並須要經過core-site.xml來傳遞jar位置(爲何能夠這樣,相見org.apache.hadoop.conf.Configuration源碼)服務器
Job部分須要使設置mapred-site.xml和yarn-site.xml的重要配置,相見wordcount工程中的WordCount類maven
接下來講下工程以後的一些操做過程。函數
1.先maven package一下oop
2.將構建好的lib文件夾、MRJobSubmit.jar和WordCount.jar上傳到linux服務器上,結構以下:
3.執行下面命令,完成wordcountjob的提交
java -cp '.:./*' com.leju.mrjobsubmit.MapReduceMain /data1/local/wqq/mrjob/WordCount.jar com.leju.wordcount.WordCount
其中com.leju.mrjobsubmit.MapReduceMain是調度主函數
參數1:/data1/local/wqq/mrjob/WordCount.jar 指定運行job的jar路徑
參數2:com.leju.wordcount.WordCount 指定job的主函數
成功的console顯示
集羣監控頁面能夠看到wordcount的job在運行處理
另外若是在windows下作job的調度與提交,在hadoop2.3的版本上,修改些源碼,相見工程中的windows文件夾
參考:
從Java代碼遠程提交YARN MapReduce任務