2013-09-25 38 views
0

我在MRv1上使用CDH4。據我所知,沒有命令行工具來檢查已完成作業的「狀態」。當我轉到Web控制檯作業詳細信息頁面時,可以看到「狀態:失敗」或「狀態:成功」。如果我運行mapred job -list allmapred job -status job_201309231203_0011,則既不指示「失敗」,也不指示「成功」。如何從命令行獲取Hadoop作業的成功/失敗狀態?

我是否缺少一些其他命令?輸出的hadoop job -list all

回答

4

拳頭幾行是:

X jobs submitted 
States are: 
     Running : 1  Succeded : 2 Failed : 3  Prep : 4 
JobId State StartTime  UserName  Priority  SchedulingInfo 

和輸出樣子的行:

job_201309171413_38136 1  1382455374980 somebody  NORMAL 0 running map tasks using 0 map slots. 0 additional slots reserved. 1 running reduce tasks using 1 reduce slots. 0 additional slots reserved. 
job_201309171413_37222 2  1382430339635 somebody  NORMAL 0 running map tasks using 0 map slots. 0 additional slots reserved. 0 running reduce tasks using 0 reduce slots. 0 additional slots reserved. 

這第二列是作業的State。基於標題行,1表示Running2表示Succeeded。它並不是最清晰的格式:4行標題,需要引用標題來確定狀態碼實際意味着什麼,並且沒有辦法獲得只有一個工作的狀態。

分析此輸出特定工作的最簡單的方法是:

$ job_id=job_201309171413_38136 
$ hadoop job -list all | awk -v job_id=${job_id} 'BEGIN{OFS="\t"; FS="\t"; final_state="Unknown"} $0 == "States are:" {getline; for(i=1;i<=NF;i++) { split($i,s," "); states[s[3]] = s[1] }} $1==job_id { final_state=states[$2]; exit} END{print final_state}' 
Running 

$ job_id=job_201309171413_37222 
$ hadoop job -list all | awk -v job_id=${job_id} 'BEGIN{OFS="\t"; FS="\t"; final_state="Unknown"} $0 == "States are:" {getline; for(i=1;i<=NF;i++) { split($i,s," "); states[s[3]] = s[1] }} $1==job_id { final_state=states[$2]; exit} END{print final_state}' 
Succeeded 

$ job_id=foobar 
$ hadoop job -list all | awk -v job_id=${job_id} 'BEGIN{OFS="\t"; FS="\t"; final_state="Unknown"} $0 == "States are:" {getline; for(i=1;i<=NF;i++) { split($i,s," "); states[s[3]] = s[1] }} $1==job_id { final_state=states[$2]; exit} END{print final_state}' 
Unknown 
+0

謝謝!我認爲一定有一些顯而易見的東西是我錯過的:P –

1

我的Hadoop版本是2.5.0.This對我的作品
首先得到JOB_ID使用

hadoop job -list 

然後通過獲得job_id

hadoop job -status {job_id} 
+1

你能確認你使用的是哪個版本的hadoop嗎?我使用的是CDH4 MRv1(即Hadoop 1.x),當時hadoop job -status {job_id}沒有指出失敗狀態(至少根據我的問題)。也許你的版本現在有這些信息? –

+0

我正在使用hadoop-2.5.0 – userRaj

+0

好的,這是有道理的。也許編輯你的答案來澄清你的版本,讓其他人知道?謝謝! –

相關問題