我想弄清楚如何鏈接多個hadoop作業,輸入一個步驟輸入下一步的輸入。我通過google搜索發現了很多東西,我應該從一個線程一次一個地調用它們,然後等待完成,或者我應該使用Job.addDependingJob(),然後提交它們。我選擇了後者,但我似乎無法在前一個作業完成後執行後續作業。鏈接多個hadoop作業,無需等待提交
這裏是我的代碼:
List<Job> jobs = new ArrayList<Job>();
for(int i = 0; i < stepCount; i++) {
JobConf jc = new JobConf(clusterConfig);
... set up mappers and reducers here ...
... set up input and output paths here ...
Job j = new Job(jc);
j.addDependingJob(jobs.get(jobs.size() - 1);
jobs.add(j);
}
for(Job j : Jobs) {
JobClient client = new JobClient();
client.init(j.getJobConf());
client.submit(j.getJobConf());
}
所有作業同時運行,而我得到的輸出是這樣的:
- 沒有工作的jar文件集。用戶類可能找不到。請參閱JobConf(Class)或JobConf#setJar(String)。
- 要處理的總輸入路徑:1
- 使用GenericOptionsParser解析參數。應用程序應該實現相同的工具。
- 沒有作業jar文件集。用戶類可能找不到。請參閱JobConf(Class)或JobConf#setJar(String)。
- 要處理的總輸入路徑:0
- 使用GenericOptionsParser解析參數。應用程序應該實現相同的工具。
- 沒有作業jar文件集。用戶類可能找不到。請參閱JobConf(Class)或JobConf#setJar(String)。
- 要處理的總輸入路徑:0
- 使用GenericOptionsParser解析參數。應用程序應該實現相同的工具。
- 沒有作業jar文件集。用戶類可能找不到。請參閱JobConf(Class)或JobConf#setJar(String)。
- 總輸入路徑的過程:0
我在做什麼錯?
注:我使用Hadoop 0.20.205
編輯澄清:我需要能夠將作業提交鏈的集羣,然後立即返回,而不等待作業鏈來完成。
JobControl適用於作業排序,但我需要能夠將作業鏈提交到羣集並立即返回(而不是等待作業完成)。 JobControl或其他一些madoop機制能夠做到這一點嗎? – Seth 2013-03-21 16:43:37