복붙노트

[HADOOP] Hadoop .20 데이터 노드의 'GC 오버 헤드 한도 초과'

HADOOP

Hadoop .20 데이터 노드의 'GC 오버 헤드 한도 초과'

나는 GC의 오버 헤드 한계로 인해 죽어가는 Hadoop Datanode 프로세스와 관련된 많은 정보를 찾지 못해서 질문을 게시 할 것이라고 생각했습니다.

Hadoop 클러스터가 3 백만 개의 파일 (현재 4 노드 클러스터)을 처리 할 수 ​​있는지 확인할 필요가있는 테스트를 실시 중입니다. 우리는 64 비트 JVM을 사용 중이며 namenode에 8g를 할당했습니다. 그러나 테스트 프로그램에서 DFS에 파일을 더 많이 쓰게되면 데이터 노드가이 오류로 죽어 가기 시작합니다. 스레드 "DataNode : [/ var / hadoop / data / hadoop / data]"예외 java.lang.OutOfMemoryError : GC 오버 헤드 한도를 초과했습니다.

몇 가지 옵션 (병렬 GC?)에 관한 게시물을 보았습니다. hadoop-env.sh에서 설정할 수있는 것은 맞지만 구문이 너무 명확하지 않아 초보자입니다. 어떻게 끝났어. 어떤 도움을 주셔서 감사합니다!

해결법

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

    1.다음을 사용하여 데이터 노드의 메모리를 늘리십시오. (hadoop restart가 필요합니다)

    다음을 사용하여 데이터 노드의 메모리를 늘리십시오. (hadoop restart가 필요합니다)

    export HADOOP_DATANODE_OPTS="-Xmx10g"
    

    이것은 힙을 10GB로 설정합니다 ... 필요에 따라 증가시킬 수 있습니다.

    $ HADOOP_CONF_DIR / hadoop-env.sh 파일의 처음에 붙여 넣을 수도 있습니다.

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

    2.명령 줄에서 맵 축소 작업을 실행하는 경우, -D 'mapreduce.map.java.opts = -Xmx1024m'및 / 또는 -D 'mapreduce.reduce.java.opts = -Xmx1024m 매개 변수를 사용하여 힙을 증가시킬 수 있습니다 '. 예:

    명령 줄에서 맵 축소 작업을 실행하는 경우, -D 'mapreduce.map.java.opts = -Xmx1024m'및 / 또는 -D 'mapreduce.reduce.java.opts = -Xmx1024m 매개 변수를 사용하여 힙을 증가시킬 수 있습니다 '. 예:

    hadoop --config /etc/hadoop/conf jar /usr/lib/hbase-solr/tools/hbase-indexer-mr-*-job.jar --conf /etc/hbase/conf/hbase-site.xml -D 'mapreduce.map.java.opts=-Xmx1024m' --hbase-indexer-file $HOME/morphline-hbase-mapper.xml --zk-host 127.0.0.1/solr --collection hbase-collection1 --go-live --log4j /home/cloudera/morphlines/log4j.properties
    

    일부 Cloudera 문서에서는 여전히 이전 매개 변수 인 mapred.child.java.opts, mapred.map.child.java.opts 및 mapred.reduce.child.java.opts를 사용합니다. 이 매개 변수는 Hadoop 2에서 더 이상 작동하지 않습니다 (Apache Hadoop YARN의 'mapreduce.map.memory.mb'와 'mapred.map.child.java.opts'의 관계는 무엇입니까? 참조).

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

    3.이 게시물은 나를 위해 문제를 해결했습니다.

    이 게시물은 나를 위해 문제를 해결했습니다.

    그래서 열쇠는 "Prepend the environment variable"입니다 (이 리눅스 명령어 구문을 처음 보았습니다 :))

    HADOOP_CLIENT_OPTS="-Xmx10g" hadoop jar "your.jar" "source.dir" "target.dir"
    
  4. ==============================

    4.GC 오버 헤드 한도는 (작은) 힙이 가득 찼음을 나타냅니다.

    GC 오버 헤드 한도는 (작은) 힙이 가득 찼음을 나타냅니다.

    이는 많은 데이터를 처리 할 때 MapReduce 작업에서 자주 발생합니다. 이 시도:

    < property >
    
      < name > mapred.child.java.opts < /name >
    
       < value > -Xmx1024m -XX:-UseGCOverheadLimit < /value >
    
    < /property >
    

    또한 다음과 같은 것들을 시도하십시오 :

    결합자를 사용하면 감속기는지도 수의 작은 배수보다 긴 목록을 가져서는 안됩니다.

    동시에 Oome에서 힙 덤프를 생성하고 YourKit 등으로 분석 할 수 있습니다.

  5. from https://stackoverflow.com/questions/10109572/gc-overhead-limit-exceeded-on-hadoop-20-datanode by cc-by-sa and MIT license