[HADOOP] Hadoop의 메모리 부족 오류
HADOOPHadoop의 메모리 부족 오류
이 http://hadoop.apache.org/common/docs/stable/single_node_setup.html 문서에 따라 Hadoop 설치를 시도했습니다. 이걸 실행하려했을 때
bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
나는 다음 예외를 얻고있다.
java.lang.OutOfMemoryError: Java heap space
예제를 시도 할 수 있도록 솔루션을 제안하십시오. 전체 예외 사항은 다음과 같습니다. 나는 하둡에 처음이다. 나는 바보 같은 짓을했을지도 모른다. 어떤 제안이라도 높게 평가 될 것입니다.
anuj@anuj-VPCEA13EN:~/hadoop$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
11/12/11 17:38:22 INFO util.NativeCodeLoader: Loaded the native-hadoop library
11/12/11 17:38:22 INFO mapred.FileInputFormat: Total input paths to process : 7
11/12/11 17:38:22 INFO mapred.JobClient: Running job: job_local_0001
11/12/11 17:38:22 INFO util.ProcessTree: setsid exited with exit code 0
11/12/11 17:38:22 INFO mapred.Task: Using ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@e49dcd
11/12/11 17:38:22 INFO mapred.MapTask: numReduceTasks: 1
11/12/11 17:38:22 INFO mapred.MapTask: io.sort.mb = 100
11/12/11 17:38:22 WARN mapred.LocalJobRunner: job_local_0001
java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:949)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)
11/12/11 17:38:23 INFO mapred.JobClient: map 0% reduce 0%
11/12/11 17:38:23 INFO mapred.JobClient: Job complete: job_local_0001
11/12/11 17:38:23 INFO mapred.JobClient: Counters: 0
11/12/11 17:38:23 INFO mapred.JobClient: Job Failed: NA
java.io.IOException: Job failed!
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1257)
at org.apache.hadoop.examples.Grep.run(Grep.java:69)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.examples.Grep.main(Grep.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
해결법
-
==============================
1.conf / mapred-site.xml 파일을 편집하고 속성을 추가하여 더 많은 메모리를 할당 할 수 있습니다.
conf / mapred-site.xml 파일을 편집하고 속성을 추가하여 더 많은 메모리를 할당 할 수 있습니다.
<property> <name>mapred.child.java.opts</name> <value>-Xmx1024m</value> </property>
그러면 힙 공간이 많은 hadoop JVM이 시작됩니다.
-
==============================
2.RPM 또는 DEB 패키지를 사용하는 모든 사람에게 설명서 및 일반적인 조언은 오해의 소지가 있습니다. 이 패키지는 hadoop 설정 파일을 / etc / hadoop에 설치합니다. 이러한 설정은 다른 설정보다 우선합니다.
RPM 또는 DEB 패키지를 사용하는 모든 사람에게 설명서 및 일반적인 조언은 오해의 소지가 있습니다. 이 패키지는 hadoop 설정 파일을 / etc / hadoop에 설치합니다. 이러한 설정은 다른 설정보다 우선합니다.
/etc/hadoop/hadoop-env.sh는 Hadoop의 최대 자바 힙 메모리를 기본값으로 설정합니다 :
export HADOOP_CLIENT_OPTS="-Xmx128m $HADOOP_CLIENT_OPTS"
이 Xmx 설정이 너무 낮습니다. 간단히이 설정으로 변경하고 다시 실행하십시오.
export HADOOP_CLIENT_OPTS="-Xmx2048m $HADOOP_CLIENT_OPTS"
-
==============================
3.또 다른 가능성은 export HADOOP_CLIENT_OPTS = "- Xmx128m $ HADOOP_CLIENT_OPTS"를 포함하는 hadoop-env.sh 편집입니다. 필자의 경우 128m에서 1024m로 변경 (데비안의 Hadoop 1.0.0.1).
또 다른 가능성은 export HADOOP_CLIENT_OPTS = "- Xmx128m $ HADOOP_CLIENT_OPTS"를 포함하는 hadoop-env.sh 편집입니다. 필자의 경우 128m에서 1024m로 변경 (데비안의 Hadoop 1.0.0.1).
-
==============================
4.이렇게 많은 조합을 시도한 후에 마침내 내 환경에서 동일한 오류가 발생합니다 (Ubuntu 12.04, Hadoop 1.0.4)는 두 가지 문제로 인한 것입니다.
이렇게 많은 조합을 시도한 후에 마침내 내 환경에서 동일한 오류가 발생합니다 (Ubuntu 12.04, Hadoop 1.0.4)는 두 가지 문제로 인한 것입니다.
-
==============================
5.{map | reduce} .java.opts와 mapreduce. {map | reduce} .memory.mb를 조정해야합니다.
{map | reduce} .java.opts와 mapreduce. {map | reduce} .memory.mb를 조정해야합니다.
예 :
hadoop jar <jarName> <fqcn> \ -Dmapreduce.map.memory.mb=4096 \ -Dmapreduce.map.java.opts=-Xmx3686m
이 질문에 대한 답변으로 좋은 자료가 있습니다.
-
==============================
6./etc/hadoop/hadoop-env.sh 파일을 편집하여이 문제를 해결할 수 있습니다.
/etc/hadoop/hadoop-env.sh 파일을 편집하여이 문제를 해결할 수 있습니다.
Hadoop은 conf 디렉토리보다 / etc / hadoop config 디렉토리 우선 순위를 부여하고있었습니다.
나는 또한 같은 상황을 만났다.
-
==============================
7.아래처럼 당신의 직업을 운영하십시오 :
아래처럼 당신의 직업을 운영하십시오 :
bin/hadoop jar hadoop-examples-*.jar grep -D mapred.child.java.opts=-Xmx1024M input output 'dfs[a-z.]+'
힙 공간은 기본적으로 32MB 또는 64MB로 설정됩니다. 튜더가 지적한대로 특성 파일에서 힙 공간을 늘리거나 특정 작업에 대해이 특성을 설정하여이 특정 작업에 대해 힙 공간을 변경할 수 있습니다.
-
==============================
8.바이너리 타르에서 hadoop 1.0.4를 설치했고 메모리 부족 문제가있었습니다. 나는 Tudor 's, Zach Garner 's, Nishant Nagwani 's 및 Andris Birkmanis의 솔루션을 시도했지만 그들 중 누구도 나를 위해 일하지 않았습니다.
바이너리 타르에서 hadoop 1.0.4를 설치했고 메모리 부족 문제가있었습니다. 나는 Tudor 's, Zach Garner 's, Nishant Nagwani 's 및 Andris Birkmanis의 솔루션을 시도했지만 그들 중 누구도 나를 위해 일하지 않았습니다.
$ HADOOP_CLIENT_OPTS를 무시하도록 bin / hadoop을 편집하면 저에게 효과적입니다.
... elif [ "$COMMAND" = "jar" ] ; then CLASS=org.apache.hadoop.util.RunJar #Line changed this line to avoid out of memory error: #HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS" # changed to: HADOOP_OPTS="$HADOOP_OPTS " ...
나는 이것을 할 수있는 더 좋은 방법이 있다고 생각하고 있지만 그것을 찾을 수는 없습니다.
-
==============================
9.Ubuntu, Hadoop 1.1.1에서도 같은 예외가 있습니다. 해결책은 간단합니다 - 일부 초기화 스크립트에 의해 설정된 쉘 변수 $ HADOOP_CLIENT_OPTS를 편집하십시오. 그러나 그것을 발견하는 데 오랜 시간이 걸렸습니다 = (
Ubuntu, Hadoop 1.1.1에서도 같은 예외가 있습니다. 해결책은 간단합니다 - 일부 초기화 스크립트에 의해 설정된 쉘 변수 $ HADOOP_CLIENT_OPTS를 편집하십시오. 그러나 그것을 발견하는 데 오랜 시간이 걸렸습니다 = (
-
==============================
10.우리는 같은 상황에 직면했다.
우리는 같은 상황에 직면했다.
hadoop-env.sh를 변경하면 나에게 효과적이다.
EXPORT HADOOP_HEAPSIZE는 주석을 달고 주석 처리를 제거하고 원하는 크기를 제공합니다.
기본적으로 지정된 HEAPSIZE는 1000MB입니다.
-
==============================
11.다음 명령을 실행하여 변수를 내보내는 것이 효과적입니다.
다음 명령을 실행하여 변수를 내보내는 것이 효과적입니다.
. conf/hadoop-env.sh
-
==============================
12.DEB install을 사용하는 Ubuntu에서 (적어도 Hadoop 1.2.1의 경우) /etc/history/hadoop-env.sh에 만들어진 /etc/profile.d/hadoop-env.sh 심볼릭 링크가있을 때마다로드됩니다. 로그인하십시오. / usr / bin / hadoop 랩퍼 자체가 결국 (/usr/libexec/hadoop-config.sh를 통해) 호출하므로 내 경험상이 작업은 필요하지 않습니다. 필자의 시스템에서는 심볼릭 링크를 제거했으며 HADOOP_CLIENT_OPTIONS에서 -Xmx의 값을 변경할 때 이상한 문제를 일으키지 않습니다. 왜냐하면 hadoop-env.sh 스크립트가 실행될 때마다 클라이언트 옵션 환경 변수가 업데이트되기 때문입니다. 이전 값)
DEB install을 사용하는 Ubuntu에서 (적어도 Hadoop 1.2.1의 경우) /etc/history/hadoop-env.sh에 만들어진 /etc/profile.d/hadoop-env.sh 심볼릭 링크가있을 때마다로드됩니다. 로그인하십시오. / usr / bin / hadoop 랩퍼 자체가 결국 (/usr/libexec/hadoop-config.sh를 통해) 호출하므로 내 경험상이 작업은 필요하지 않습니다. 필자의 시스템에서는 심볼릭 링크를 제거했으며 HADOOP_CLIENT_OPTIONS에서 -Xmx의 값을 변경할 때 이상한 문제를 일으키지 않습니다. 왜냐하면 hadoop-env.sh 스크립트가 실행될 때마다 클라이언트 옵션 환경 변수가 업데이트되기 때문입니다. 이전 값)
-
==============================
13.지난 주에 비슷한 문제로 끝났습니다. 사용하고 있던 입력 파일에는 볼 수없는 커다란 엉덩이 라인이있었습니다. 그 줄은 내 파일 크기의 거의 95 % (1GB의 95 %! 상상해보십시오!). 먼저 입력 파일을 살펴 보시기 바랍니다. 살펴볼 잘못된 입력 파일이있을 수 있습니다. 입력 파일을 확인한 후에 힙 공간을 늘려보십시오.
지난 주에 비슷한 문제로 끝났습니다. 사용하고 있던 입력 파일에는 볼 수없는 커다란 엉덩이 라인이있었습니다. 그 줄은 내 파일 크기의 거의 95 % (1GB의 95 %! 상상해보십시오!). 먼저 입력 파일을 살펴 보시기 바랍니다. 살펴볼 잘못된 입력 파일이있을 수 있습니다. 입력 파일을 확인한 후에 힙 공간을 늘려보십시오.
-
==============================
14.mapreduce.child.java.opts에 mapred 작업을 실행하는 데 필요한 메모리가 충분한 지 확인하십시오. 또한 mapreduce.task.io.sort.mb가 mapreduce.child.java.opts보다 작아야합니다.
mapreduce.child.java.opts에 mapred 작업을 실행하는 데 필요한 메모리가 충분한 지 확인하십시오. 또한 mapreduce.task.io.sort.mb가 mapreduce.child.java.opts보다 작아야합니다.
예:
mapreduce.child.java.opts=Xmx2048m mapreduce.task.io.sort.mb=100
그렇지 않으면 hadoop-env.sh의 HADOOP_CLIENT_OPTS가 구성되어 있어도 메모리가 충분할지라도 OOM 문제가 발생합니다.
from https://stackoverflow.com/questions/8464048/out-of-memory-error-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 예외없이이 간단한 Mahout 프로그램을 빌드 / 실행하려면 어떻게해야합니까? (0) | 2019.05.30 |
---|---|
[HADOOP] Spark Executor 노드에 Python 의존성을 설치하는 가장 쉬운 방법은 무엇입니까? (0) | 2019.05.30 |
[HADOOP] 네임 노드가 시작되지 않음 (0) | 2019.05.30 |
[HADOOP] 스파크가 강제로 코드를 실행하도록하려면 어떻게해야합니까? (0) | 2019.05.29 |
[HADOOP] Sqoop 가져 오기 : 복합 기본 키 및 텍스트 기본 키 (0) | 2019.05.29 |