mapreduce job提交的幾種執行方式
阿新 • • 發佈:2019-02-18
總共整理下來有三大類:
- 叢集上直接通過jar包來呼叫,輸入和輸出檔案必須都存在hdfs叢集上
- linux環境下,在eclipse中叢集或本地呼叫程式,以及輸入和輸出檔案存於叢集或本地
- windows環境下,在eclipse中叢集或本地呼叫程式,以及輸入和輸出檔案存於叢集或本地
1、在eclipse中開發好mr程式(windows或linux下都可以),然後打成jar包(wc.jar),上傳到伺服器
執行命令
hadoop jar wc.jar com.elon.bigdata.hadoop.MainClassRunner
這種方式會將這個job提交到yarn叢集上去執行,程式的輸入和輸出檔案可以存在windows/linux本地或者hdfs叢集上,根據程式中編寫的Path路徑來做選擇。
2、在Linux的eclipse中直接啟動Runner類的main方法,這種方式可以使job執行在本地,也可以執行在yarn叢集
究竟執行在本地還是在叢集,取決於第一個配置引數
conf.set("mapreduce.framework.name", "yarn"); //設定mapreduce的執行是在local(預設)還是yarn上 conf.set("yarn.resourcemanager.hostname", "hadoop"); //若在yarn上執行,則指定yarn主機名
如果確實需要在eclipse中提交到yarn執行,必須做好以下兩個設定
將mr工程打成jar包(wc.jar),放在工程主目錄下
在工程的main方法中,加入一個配置引數 conf.set(“mapreduce.job.jar”,”wc.jar”);
3、在windows的eclipse中執行本地模式,步驟為:
- a、在windows中找一個地方放一份hadoop的安裝包,並且將其bin目錄配到環境變數中
- b、根據windows平臺的版本(32?64?win7?win8?),替換掉hadoop安裝包中的本地庫(bin,lib)
- c、mr程式的工程中不要有引數mapreduce.framework.name的設定
4、在windows的eclipse中執行main方法來提交job到叢集執行,比較麻煩
- a、類似於方式3中所描述的對本地庫相容性進行改造
- b、修改YarnRunner這個類