Как получить имена текущих запущенных заданий hadoop? - PullRequest
16 голосов
/ 05 мая 2011

Мне нужно получить список имен заданий, которые в данный момент выполняются, но hadoop -job list даст мне список идентификаторов заданий.

  • Есть ли способ получить имена запущенных заданий?
  • Есть ли способ получить названия заданий из идентификаторов заданий?

Ответы [ 8 ]

26 голосов
/ 06 марта 2012

Мне приходилось делать это несколько раз, поэтому я придумал следующую командную строку, которую вы можете где-нибудь добавить в скрипт и использовать повторно.Он печатает идентификатор задания, за которым следует имя задания.

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>//'"
8 голосов
/ 25 июня 2016

Если вы используете Hadoop YARN, не используйте mapred job -list (или его устаревшую версию hadoop job -list), просто выполните

yarn application -appStates RUNNING -list

Это также распечатывает название приложения / задания. Для приложений mapreduce вы можете получить соответствующий JobId, заменив префикс application Application-Id на job.

3 голосов
/ 21 мая 2014

Изменяя скрипт 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>.*//'"
1 голос
/ 05 мая 2011

Если вы сделаете $HADOOP_HOME/bin/hadoop -job -status <jobid>, вы получите URL отслеживания в выходных данных. Переход на этот URL даст вам страницу отслеживания с именем

Job Name: <job name here>

Команда -status также дает файл, который также можно увидеть по URL-адресу отслеживания . В этом файле есть mapred.job.name с именем задания.

Я не нашел способа получить доступ к названию задания из командной строки. Не сказать, что нет ... но я не найден. :)

URL-адрес отслеживания и xml file , вероятно, являются вашими лучшими вариантами получения названия работы.

0 голосов
/ 28 апреля 2016

Мне нужно было просмотреть историю, поэтому я изменил mapred job -list на mapred job -list all ....

В итоге я добавил -L к команде curl, поэтому блок там был:

curl -s -L -XGET {}

Это допускает перенаправление, например, если задание удалено и в истории заданий. Я также обнаружил, что это JobName в истории HTML, поэтому я изменил 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) * ​​1017 *

0 голосов
/ 04 марта 2016

На всякий случай, если кто-то заинтересован в последнем запросе, чтобы получить Имя работы :-). Модифицированная команда Pirooz -

mapred job -list 2> / dev / null | egrep '^ job' | awk '{print $ 1}' | xargs -n 1 -I {} sh -c "mapred job -status {} 2> / dev / null | egrep 'Файл задания'" | awk '{print $ 3}' | xargs -n 1 -I {} sh -c "hadoop fs -cat {} 2> / dev / null" | egrep 'mapreduce.job.name' | awk -F "" '{print $ 2}' | awk -F "" '{print $ 1}'

0 голосов
/ 10 июня 2014

, набрав "jps" в вашем терминале.

0 голосов
/ 20 апреля 2014

Вы можете найти информацию в 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 

INFO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...