如何获取当前正在运行的hadoop作业的名称?

Kar*_*hik 16 hadoop

我需要获取当前正在运行的作业名称列表,但是hadoop -job list给我一份jobID列表.

  • 有没有办法获得正在运行的工作的名称?
  • 有没有办法从jobID获取作业名称?

Ant*_*nyF 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>//'"
Run Code Online (Sandbox Code Playgroud)

  • 直截了当 (4认同)

Dav*_*aro 8

如果您使用Hadoop YARN请勿使用mapred job -list(或其弃用版本hadoop job -list)

yarn application -appStates RUNNING -list
Run Code Online (Sandbox Code Playgroud)

这也打印出应用程序/作业名称.对于mapreduce应用程序,您可以JobId通过替换with 的application前缀来获取相应的.Application-Idjob


Qui*_*nnG 1

如果这样做,您将在输出中$HADOOP_HOME/bin/hadoop -job -status <jobid>获得跟踪 URL 。访问该 URL 将为您提供跟踪页面,其名称为

Job Name: <job name here>
Run Code Online (Sandbox Code Playgroud)

该命令还给出了一个文件,也可以从跟踪 URL-status中看到该文件。该文件中有一个包含作业名称的文件。mapred.job.name

我没有找到从命令行访问作业名称的方法。并不是说没有……但我没有找到。:)

跟踪URL和 xml文件可能是获取作业名称的最佳选择。