Como obter os nomes dos trabalhos do hadoop actualmente em execução?

Preciso da lista de nomes de funções que estão a correr, mas dá-me uma lista de empregados.

    Há alguma forma de obter os nomes dos trabalhos em curso? Há alguma forma de obter os nomes dos empregados?
 15
Author: slm, 2011-05-05

8 answers

Tive de fazer isto várias vezes, por isso inventei a seguinte linha de comando que podes pôr num guião algures e reutilizar. Imprime o jobid seguido pelo nome do trabalho.
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>//'"
 26
Author: AnthonyF, 2012-03-05 22:13:20

Se utilizar Fio Hadoop, não utilize mapred job -list (ou a sua versão depreciada hadoop job -list) apenas faça

yarn application -appStates RUNNING -list

Isso também imprime o nome da aplicação / tarefa. Para as aplicações mapreduce você pode obter o JobId correspondente substituindo o prefixo application do Application-Id por job.

 8
Author: David Ongaro, 2016-09-01 08:21:33

Modificando a escrita de AnthonyF, você pode usar o seguinte no fio:

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
Author: Pirooz, 2014-05-21 16:48:50

Se o fizer {[1] } irá obter um URL de localização no resultado. Ir a essa URL lhe dará a página de rastreamento, que tem o nome

Job Name: <job name here>

O comando -status também dá um ficheiro, que também pode ser visto a partir do URL de localização. Neste arquivo está um mapred.job.name que tem o nome da tarefa.

Não encontrei maneira de aceder ao nome do trabalho a partir da linha de comando. Para não dizer que não há... mas não foi encontrado por mim. :)

O ficheiro de localização e xml são provavelmente as suas melhores opções para obter o nome do trabalho.

 1
Author: QuinnG, 2011-05-05 17:43:50

Pode encontrar a informação em JobTracker UI

Podes ver

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 

Informação

 0
Author: Unmesha SreeVeni, 2014-04-20 09:32:10

Apenas no caso de alguém interessado na última consulta para obter o nome do trabalho: -). Comando Pirooz Modificado -

Mapred trabalho -lista 2> /dev/null | egrep '^de trabalho' | awk '{print $1}' | xargs -n 1 -I {} sh -c "mapred trabalho -estado {} 2>/dev/null | egrep 'Arquivo de Trabalho'" | awk '{print $3}' | xargs -n 1 -I{} sh -c "hadoop fs -cat {} 2>/dev/null" | egrep 'mapreduce.trabalho.o nome' | awk -F"" '{print $2}' | awk -F "" '{print $1}'

 0
Author: Naresh Jangra, 2016-03-04 12:34:27

Eu precisava de ver a história, por isso mudei mapred job -list para mapred job -list all....

Acabei por adicionar um -L ao comando curl, por isso o bloco era:

curl -s -L -XGET {}
Isso permite redirecionamento, como se o trabalho fosse aposentado e na história do trabalho. Também descobri que é o JobName no HTML histórico, por isso mudei o grep:
grep 'Job.*Name' 

Mais, claro, a mudança hadoop para mapred. Aqui está o comando completo:

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>//'"
(Eu também mudei em torno do primeiro grep de modo que eu era apenas a olhar para um determinado nome de utilizador....MMMV)
 0
Author: Sheeri, 2016-04-28 16:27:41
Escrevendo " jps " no seu terminal .
 -1
Author: mohamus, 2014-06-10 12:30:22