我需要获取当前正在运行的作业名称列表,但是hadoop -job list
会给我一个jobID列表。
答案 0 :(得分:26)
我必须多次执行此操作,因此我提出了以下命令行,您可以将其放入某个脚本并重用。它打印jobid,后跟作业名称。
hadoop job -list | egrep '^job' | awk '{print $1}' | xargs -n 1 -I {} sh -c "hadoop job -status {} | egrep '^tracking' | awk '{print \$3}'" | xargs -n 1 -I{} sh -c "echo -n {} | sed 's/.*jobid=//'; echo -n ' ';curl -s -XGET {} | grep 'Job Name' | sed 's/.* //' | sed 's/<br>//'"
答案 1 :(得分:8)
如果您使用Hadoop YARN,请不要使用mapred job -list
(或已弃用的版本hadoop job -list
),只需执行
yarn application -appStates RUNNING -list
这也打印出应用程序/作业名称。对于mapreduce应用程序,您可以使用JobId
替换application
的{{1}}前缀来获取相应的Application-Id
。
答案 2 :(得分:3)
修改AnthonyF的脚本,您可以在纱线上使用以下内容:
mapred job -list 2> /dev/null | egrep '^\sjob' | awk '{print $1}' | xargs -n 1 -I {} sh -c "mapred job -status {} 2>/dev/null | egrep 'Job File' | awk '{print \$3}'" | xargs -n 1 -I{} sh -c "hadoop fs -cat {} 2>/dev/null | egrep 'mapreduce.job.name' | sed 's/.*<value>//' | sed 's/<\/value>.*//'"
答案 3 :(得分:1)
如果您执行$HADOOP_HOME/bin/hadoop -job -status <jobid>
,则会在输出中获得跟踪网址。转到该URL将为您提供跟踪页面,其名称为
Job Name: <job name here>
-status
命令还提供了一个文件,也可以从跟踪网址中看到。在此文件中是mapred.job.name
,其中包含作业名称。
我没有找到从命令行访问作业名称的方法。不是说没有...但是没有找到我。 :)
跟踪网址和xml 文件可能是获取作业名称的最佳选择。
答案 4 :(得分:0)
您可以在JobTracker
UI
你可以看到
Jobid
Priority
User
Name of the job
State of the job whether it succeed or failed
Start Time
Finish Time
Map % Complete
Reduce % Complete etc
答案 5 :(得分:0)
以防任何一个对最新查询感兴趣的人获得工作名称:-)。修改后的Pirooz命令 -
mapred job -list 2&gt; / dev / null | egrep'^ job'| awk'{print $ 1}'| xargs -n 1 -I {} sh -c“mapred job -status {} 2&gt; / dev / null | egrep'Pob File'”| awk'{print $ 3}'| xargs -n 1 -I {} sh -c“hadoop fs -cat {} 2&gt; / dev / null”| egrep'mapreduce.job.name'| awk -F“”'{print $ 2}'| awk -F“”'{print $ 1}'
答案 6 :(得分:0)
我需要查看历史记录,因此我将mapred job -list
更改为mapred job -list all
....
我最后在curl命令中添加了-L
,因此阻止了:
curl -s -L -XGET {}
这允许重定向,例如作业是否已停用以及作业历史记录。我还发现它是历史HTML中的JobName,所以我更改了grep:
grep 'Job.*Name'
当然,正在将hadoop
更改为mapred
。这是完整的命令:
mapred job -list all | egrep '^job' | awk '{print $1}' | xargs -n 1 -I {} sh -c "mapred job -status {} | egrep '^tracking' | awk '{print \$3}'" | xargs -n 1 -I{} sh -c "echo -n {} | sed 's/.*jobid=//'; echo -n ' ';curl -s -L -XGET {} | grep 'Job.*Name' | sed 's/.* //' | sed 's/<br>//'"
(我也改变了第一个grep,所以我只看了一个用户名.... YMMV)
答案 7 :(得分:-1)
输入&#34; jps&#34;在你的终端。