복붙노트

[HADOOP] 현재 실행중인 hadoop 작업의 이름을 얻는 방법?

HADOOP

현재 실행중인 hadoop 작업의 이름을 얻는 방법?

현재 실행중인 작업 이름 목록을 가져와야하지만 hadoop -job list는 jobID 목록을 제공합니다.

해결법

  1. ==============================

    1.나는 이것을 여러 번 해봐야했기 때문에 스크립트에서 어딘가에 던져서 재사용 할 수있는 다음 명령 줄을 생각해 냈습니다. jobid 다음에 작업 이름을 출력합니다.

    나는 이것을 여러 번 해봐야했기 때문에 스크립트에서 어딘가에 던져서 재사용 할 수있는 다음 명령 줄을 생각해 냈습니다. 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>//'"
    
  2. ==============================

    2.Hadoop YARN을 사용하는 경우 맵핑 된 작업 목록 (또는 사용되지 않는 버전 hadoop 작업 목록)을 사용하지 마십시오.

    Hadoop YARN을 사용하는 경우 맵핑 된 작업 목록 (또는 사용되지 않는 버전 hadoop 작업 목록)을 사용하지 마십시오.

    yarn application -appStates RUNNING -list
    

    그것도 응용 프로그램 / 작업 이름을 출력합니다. mapreduce 응용 프로그램의 경우 Application-Id의 응용 프로그램 접두어를 작업으로 대체하여 해당 JobId를 가져올 수 있습니다.

  3. ==============================

    3.AnthonyF의 스크립트를 수정하면 Yarn에 다음을 사용할 수 있습니다.

    AnthonyF의 스크립트를 수정하면 Yarn에 다음을 사용할 수 있습니다.

    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>.*//'"
    
  4. ==============================

    4.$ HADOOP_HOME / bin / hadoop -job -status 를 수행하면 출력에 추적 URL이 생깁니다. 해당 URL로 이동하면 이름이있는 추적 페이지가 표시됩니다.

    $ HADOOP_HOME / bin / hadoop -job -status 를 수행하면 출력에 추적 URL이 생깁니다. 해당 URL로 이동하면 이름이있는 추적 페이지가 표시됩니다.

    Job Name: <job name here>
    

    -status 명령은 추적 URL에서도 볼 수있는 파일을 제공합니다. 이 파일에는 작업 이름이있는 mapred.job.name이 있습니다.

    명령 줄에서 작업 이름에 액세스하는 방법을 찾지 못했습니다. 거기에 없다고 말하면서는 안되지만 ... :)

    추적 URL 및 XML 파일은 아마도 작업 이름을 가져 오는 데 가장 좋은 옵션 일 수 있습니다.

  5. ==============================

    5.JobTracker UI에서이 정보를 찾을 수 있습니다.

    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 
    

    정보

  6. ==============================

    6.최근 쿼리에 관심이있는 사람이라면 작업 이름을 얻을 수 있습니다 :-). 수정 된 피로 오즈 명령 -

    최근 쿼리에 관심이있는 사람이라면 작업 이름을 얻을 수 있습니다 :-). 수정 된 피로 오즈 명령 -

    맵핑 된 작업 -리스트 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}'

  7. ==============================

    7.나는 역사를 들여다 볼 필요가 있었기 때문에 mapred joblist를 mapred job list로 변경했다.

    나는 역사를 들여다 볼 필요가 있었기 때문에 mapred joblist를 mapred job list로 변경했다.

    curl 명령에 -L을 추가 했으므로 블록이있었습니다.

    curl -s -L -XGET {}
    

    이렇게하면 리디렉션 (예 : 작업이 폐기 된 경우 및 작업 내역)이 허용됩니다. 또한 History HTML에 JobName이라는 것을 발견 했으므로 grep을 변경했습니다.

    grep 'Job.*Name' 
    

    플러스 물론 mapo로 변경하는 hadoop. 전체 명령은 다음과 같습니다.

    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)

  8. ==============================

    8.터미널에 "jps"라고 입력하십시오.

    터미널에 "jps"라고 입력하십시오.

  9. from https://stackoverflow.com/questions/5892495/how-to-get-names-of-the-currently-running-hadoop-jobs by cc-by-sa and MIT license