복붙노트

[HADOOP] 원사 MapReduce 작업 문제 - Hadoop 2.3.0에서 AM 컨테이너 시작 오류

HADOOP

원사 MapReduce 작업 문제 - Hadoop 2.3.0에서 AM 컨테이너 시작 오류

Hadoop 2.3.0의 2 노드 클러스터를 설정했습니다. 잘 작동하며 distributedshell-2.2.0.jar 예제를 성공적으로 실행할 수 있습니다. 그러나 어떤지도 작업을 실행하려고하면 오류가 발생합니다. 나는 (http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide)에 따라 MapReduce 작업을 실행하기 위해 MapRed.xml 및 기타 구성을 설정했지만 다음과 같은 오류가 발생합니다.

14/03/22 20:31:17 INFO mapreduce.Job: Job job_1395502230567_0001 failed with state FAILED due to: Application application_1395502230567_0001 failed 2 times due to AM Container for appattempt_1395502230567_0001_000002 exited 
with  exitCode: 1 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: 
    org.apache.hadoop.util.Shell$ExitCodeException: 
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
        at org.apache.hadoop.util.Shell.run(Shell.java:418)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
        at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)


    Container exited with a non-zero exit code 1
    .Failing this attempt.. Failing the application.
    14/03/22 20:31:17 INFO mapreduce.Job: Counters: 0
    Job ended: Sat Mar 22 20:31:17 PKT 2014
    The job took 6 seconds.

그리고 stderr (job log)를 보면 한 줄 밖에 없습니다. "주 클래스 614를 찾거나로드 할 수 없습니다"

이제 내가 봤어 그리고 일반적 으로이 문제는 다른 JAVA 버전 또는 yarn-site.xml classpath에 제대로 설정되지 않은 경우, 내 yarn-site.xml이 있습니다.

  <property>
    <name>yarn.application.classpath</name>
    <value>/opt/yarn/hadoop-2.3.0/etc/hadoop,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*,/opt/yarn/hadoop-2.3.0/*,/opt/yarn/hadoop-2.3.0/lib/*</value>
  </property>

그래서 다른 아이디어는 무엇이 문제가 될 수 있습니까?

다음과 같이 mapreduce 작업을 실행하고 있습니다.

$HADOOP_PREFIX/bin/hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter out

해결법

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

    1.Hortonworks HDP 2.1을 수동으로 설치하려고 할 때도 같은 문제가 발생했습니다. 나는 다음을 포함하는 컨테이너 발사기 스크립트를 포착했다.

    Hortonworks HDP 2.1을 수동으로 설치하려고 할 때도 같은 문제가 발생했습니다. 나는 다음을 포함하는 컨테이너 발사기 스크립트를 포착했다.

    #!/bin/bash
    
    export NM_HTTP_PORT="8042"
    export LOCAL_DIRS="/data/1/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001,/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001,/data/3/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001,/data/4/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001"
    export JAVA_HOME="/usr/java/latest"
    export NM_AUX_SERVICE_mapreduce_shuffle="AAA0+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
    export CLASSPATH="$PWD:$HADOOP_CONF_DIR:$HADOOP_COMMON_HOME/share/hadoop/common/*:$HADOOP_COMMON_HOME/share/hadoop/common/lib/*:$HADOOP_HDFS_HOME/share/hadoop/hdfs/*:$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*:$HADOOP_YARN_HOME/share/hadoop/yarn/*:$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*:job.jar/job.jar:job.jar/classes/:job.jar/lib/*:$PWD/*"
    export HADOOP_TOKEN_FILE_LOCATION="/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/container_1406927878786_0001_01_000001/container_tokens"
    export NM_HOST="test02.admin.hypertable.com"
    export APPLICATION_WEB_PROXY_BASE="/proxy/application_1406927878786_0001"
    export JVM_PID="$$"
    export USER="doug"
    export HADOOP_HDFS_HOME="/usr/lib/hadoop-hdfs"
    export PWD="/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/container_1406927878786_0001_01_000001"
    export CONTAINER_ID="container_1406927878786_0001_01_000001"
    export HOME="/home/"
    export NM_PORT="62404"
    export LOGNAME="doug"
    export APP_SUBMIT_TIME_ENV="1406928095871"
    export MAX_APP_ATTEMPTS="2"
    export HADOOP_CONF_DIR="/etc/hadoop/conf"
    export MALLOC_ARENA_MAX="4"
    export LOG_DIRS="/data/1/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001,/data/2/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001,/data/3/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001,/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001"
    ln -sf "/data/1/hadoop/yarn/local/usercache/doug/filecache/10/libthrift-0.9.2.jar" "libthrift-0.9.2.jar"
    ln -sf "/data/4/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/13/job.xml" "job.xml"
    mkdir -p jobSubmitDir
    ln -sf "/data/3/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/12/job.split" "jobSubmitDir/job.split"
    mkdir -p jobSubmitDir
    ln -sf "/data/2/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/11/job.splitmetainfo" "jobSubmitDir/job.splitmetainfo"
    ln -sf "/data/1/hadoop/yarn/local/usercache/doug/appcache/application_1406927878786_0001/filecache/10/job.jar" "job.jar"
    ln -sf "/data/2/hadoop/yarn/local/usercache/doug/filecache/11/hypertable-0.9.8.0-apache2.jar" "hypertable-0.9.8.0-apache2.jar"
    exec /bin/bash -c "$JAVA_HOME/bin/java -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA  -Xmx1024m org.apache.hadoop.mapreduce.v2.app.MRAppMaster 1>/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001/stdout 2>/data/4/hadoop/yarn/logs/application_1406927878786_0001/container_1406927878786_0001_01_000001/stderr "
    

    CLASSPATH를 설정하는 줄이 범인이었다. 이 문제를 해결하기 위해 hadoop-env.sh에서 HADOOP_COMMON_HOME, HADOOP_HDFS_HOME, HADOOP_YARN_HOME 및 HADOOP_MAPRED_HOME 변수를 / usr / lib 아래의 적절한 디렉토리를 가리 키도록 설정해야했습니다. 각 디렉토리에서 항아리를 찾을 수있는 share / hadoop / ... 하위 디렉토리 계층을 설정해야했습니다.

  2. ==============================

    2.나는이 질문을 다음과 같이 풀었다.

    나는이 질문을 다음과 같이 풀었다.

    왜냐하면 내 hadoop / etc / hadoop [hadoop-2.7.3 구성 카탈로그] : mapred-site.xml 정보 :

    <configuration>
     <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
     </property>
     <property>
       <name>mapreduce.jobhistory.address</name>
       <value>zhangjunj:10020</value>
     </property>
     <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>zhangjunj:19888</value>
     </property>
    </configuration>
    

    이 파일에. 'zhangjunj'는 주인의 기계 이름이어야하지만 처음에는 'hadoop'이라고 적었습니다.

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

    3.문제가 해결되었지만 경로가 잘못 되었기 때문입니다. mapred, hdfs에 대한 완전한 dir 경로를 제공함으로써, yarn & common은 문제를 해결합니다.

    문제가 해결되었지만 경로가 잘못 되었기 때문입니다. mapred, hdfs에 대한 완전한 dir 경로를 제공함으로써, yarn & common은 문제를 해결합니다.

    감사, 토니

  4. ==============================

    4.속성을 확인하십시오. 필요한 모든 병이 있는지 확인하십시오.

    속성을 확인하십시오. 필요한 모든 병이 있는지 확인하십시오.

    ** yarn.application.classpath **     usr / lib / hadoop / lib / hadoop-hdfs /, / usr / lib / hadoop-hdfs / lib /, / etc / hadoop / conf, / usr / lib / hadoop / lib / hadoop-mapreduce /, / usr / lib / hadoop-mapreduce / lib / hadoop-yarn /

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

    5.아마도 $ HADOOP_HOME / bin 아래의 코드를 사용하여 HistoryServer를 실행할 수 있습니다.

    아마도 $ HADOOP_HOME / bin 아래의 코드를 사용하여 HistoryServer를 실행할 수 있습니다.

    ./mr-jobhistory-daemon.sh start historyserver
    

    그런 다음이 URL (Hadoop Log)에서 Hadoop Error의 로그를 제어 할 수 있습니다.

    http://<Resource Manager Host name adress>:8088/cluster
    

    그리고 아마 당신은 클래스를 찾을 수 없습니다 예외

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

    6.Ambari 2.0 + HDP2.3 + HUE3.9에서도이 문제가 발생했습니다. 내 수정 experiece입니다 : 1. 모든 하프 얀 노드에 스파크 클라이언트가 있는지 확인하십시오. 2. 모든 원사 노드 (스파크 클라이언트) 및 색상 호스트에 SPARK_HOME 내보내기

    Ambari 2.0 + HDP2.3 + HUE3.9에서도이 문제가 발생했습니다. 내 수정 experiece입니다 : 1. 모든 하프 얀 노드에 스파크 클라이언트가 있는지 확인하십시오. 2. 모든 원사 노드 (스파크 클라이언트) 및 색상 호스트에 SPARK_HOME 내보내기

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

    7.권한은 6050 소유자 여야합니다 : root group hadoop

    권한은 6050 소유자 여야합니다 : root group hadoop

    --- Sr-s --- 1 root hadoop / usr / lib / hadoop-yarn / bin / container-executor

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

    8.먼저 로그를 확인하십시오 (Hadoop의 logs 디렉토리 아래 사용자 디렉토리에 있음).

    먼저 로그를 확인하십시오 (Hadoop의 logs 디렉토리 아래 사용자 디렉토리에 있음).

    또한 yarn, hdfs, 핵심 사이트 XML 파일에서 언급 한 모든 디렉토리의 사용 권한을 확인하십시오. 이 오류는 대부분의 경우 잘못된 권한 문제로 인해 발생합니다.

  9. ==============================

    9.시스템의 스왑 크기를 확인하십시오 : free -m 스왑이있는 경우 : 0 0 0이 지침에 따라 스왑 메모리를 할당합니다.

    시스템의 스왑 크기를 확인하십시오 : free -m 스왑이있는 경우 : 0 0 0이 지침에 따라 스왑 메모리를 할당합니다.

  10. ==============================

    10.내 경우에는 문제는 메모리 부족 때문이었습니다. 위의 주석에서 adino가 제안한 것처럼 원사 사이트 -xml에 아래를 삽입했습니다.

    내 경우에는 문제는 메모리 부족 때문이었습니다. 위의 주석에서 adino가 제안한 것처럼 원사 사이트 -xml에 아래를 삽입했습니다.

    <property> <name>yarn.nodemanager.delete.debug-delay-sec</name> <value>600</value> </property>
    

    그 후 stderr 로그 파일에 오류가 표시 될 수 있습니다. 정확한 문구를 기억하지 못합니다 (로그 파일이 잠시 후에 삭제됨). 그것은 "메모리 부족 오류"라인을 따라있었습니다.

    내 가상 컴퓨터를 편집하여 크기가 3 기가 바이트 (아마도 총 잔인 함) 인 다른 스왑 파티션을 추가했습니다. 나는 Gparted와 함께 이것을했다.

    이후 나는 새로운 스왑 파티션을 타이핑하여 등록해야했다.

    mkswap /dev/sda6 (/dev/sda6 is the partition name)
    swapon /dev/sda6 
    

    "blkid"를 입력하고 uid를 복사하여 새 스왑 파티션의 uid를 찾았습니다.

    스왑을 fstab 파일에 등록했습니다.

    sudo vi /etc/fstab
    

    나는 새로운 스왑 파티션을위한 새로운 라인을 추가했다. 이전 스왑 파티션에서 전체 줄을 복사하고 UID를 변경했습니다.

    UUID=2d29cddd-e721-4a7b-95c0-7ce52734d8a3 none  swap    sw      0       0
    

    이 후에 오류가 사라졌습니다. 이 문제를 해결할 수있는보다 우아한 방법이있을 것이라고 확신하지만, 이것이 저에게 효과적입니다. 나는 리눅스를 다룰 때 새로운면이있다.

  11. ==============================

    11.yarn.nodemanager.delete.debug-delay-sec를 600으로 설정하여 로그 제거를 지연시켜야합니다.

    yarn.nodemanager.delete.debug-delay-sec를 600으로 설정하여 로그 제거를 지연시켜야합니다.

    이렇게하면 관련 컨테이너 디렉토리의 stderr, stdout 및 syslog / hadoop / yarn / log를 검색 할 수 있습니다.

    대부분 syslog에 오류가 있습니다. 그리고, 대부분 tez.history.logging.service.class = org.apache.tez.dag.history.logging.ats.ATSV15HistoryLoggingService 클래스의 ClassNotFoundException이 될 가능성이 높습니다.

    이 경우 다음 티켓을 참조하십시오.

    https://issues.apache.org/jira/browse/AMBARI-15041

  12. from https://stackoverflow.com/questions/22579943/yarn-mapreduce-job-issue-am-container-launch-error-in-hadoop-2-3-0 by cc-by-sa and MIT license