[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.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.나는이 질문을 다음과 같이 풀었다.
나는이 질문을 다음과 같이 풀었다.
왜냐하면 내 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.문제가 해결되었지만 경로가 잘못 되었기 때문입니다. mapred, hdfs에 대한 완전한 dir 경로를 제공함으로써, yarn & common은 문제를 해결합니다.
문제가 해결되었지만 경로가 잘못 되었기 때문입니다. mapred, hdfs에 대한 완전한 dir 경로를 제공함으로써, yarn & common은 문제를 해결합니다.
감사, 토니
-
==============================
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.아마도 $ 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.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.권한은 6050 소유자 여야합니다 : root group hadoop
권한은 6050 소유자 여야합니다 : root group hadoop
--- Sr-s --- 1 root hadoop / usr / lib / hadoop-yarn / bin / container-executor
-
==============================
8.먼저 로그를 확인하십시오 (Hadoop의 logs 디렉토리 아래 사용자 디렉토리에 있음).
먼저 로그를 확인하십시오 (Hadoop의 logs 디렉토리 아래 사용자 디렉토리에 있음).
또한 yarn, hdfs, 핵심 사이트 XML 파일에서 언급 한 모든 디렉토리의 사용 권한을 확인하십시오. 이 오류는 대부분의 경우 잘못된 권한 문제로 인해 발생합니다.
-
==============================
9.시스템의 스왑 크기를 확인하십시오 : free -m 스왑이있는 경우 : 0 0 0이 지침에 따라 스왑 메모리를 할당합니다.
시스템의 스왑 크기를 확인하십시오 : free -m 스왑이있는 경우 : 0 0 0이 지침에 따라 스왑 메모리를 할당합니다.
-
==============================
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.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
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
'HADOOP' 카테고리의 다른 글
[HADOOP] HDFS가 데이터를 저장하는 곳 (0) | 2019.07.08 |
---|---|
[HADOOP] Hive에서 날짜 차이를 계산하는 방법 (0) | 2019.07.07 |
[HADOOP] Hadoop과 압축 된 입력 파일에 관한 아주 기본적인 질문 (0) | 2019.07.07 |
[HADOOP] 어떻게하면 Python / pyspark로 graphx를 실행할 수 있습니까? (0) | 2019.07.07 |
[HADOOP] Hadoop 2의 Hive 매퍼 수를 늘립니다. (0) | 2019.07.07 |