Como obter os nomes dos trabalhos do hadoop actualmente em execução?
-
Há alguma forma de obter os nomes dos trabalhos em curso?
Há alguma forma de obter os nomes dos empregados?
8 answers
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>//'"
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
.
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>.*//'"
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.
O ficheiro de localização e xml são provavelmente as suas melhores opções para obter o nome do trabalho.
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
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}'
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)