복붙노트

[HADOOP] Hadoop을 실행할 때 OutOfMemoryException을 피하는 방법?

HADOOP

Hadoop을 실행할 때 OutOfMemoryException을 피하는 방법?

많은 패턴 매칭을 통해 1.5TB 이상의 데이터를 처리하는 Hadoop 작업을 수행하고 있습니다. 나는 각각 16GB RAM을 가진 여러 머신을 가지고 있는데, 나는 항상이 데이터로이 작업에서 OutOfMemoryException을 얻는다 (나는 Hive를 사용하고있다).

나는 최적의 방법으로 HADOOP_HEAPSIZE 옵션을 파일 hadoop-env.sh에서 설정하는 방법을 알고 싶다. 내 작업이 실패하지 않을 것이다. 내 작업이 실패하지 않도록이 옵션을 설정하는 것도 가능합니까?

HADOOP_HEAPSIZE를 1,5 GB로 설정하고 쿼리에서 일치하는 패턴의 절반을 제거하면 작업이 성공적으로 실행됩니다. 직업 선택을 피하는 데 도움이되지 않는다면이 옵션은 무엇입니까?

나는 최적의 설정으로 더 많은 실험을하기 위해 노력하지만 그 작업이 10 시간 이상 걸리기 때문에 나는 당신의 조언을 구하고있다.

해결법

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

    1.작업이 실패합니까? 아니면 서버가 충돌합니까? 작업이 노드의 OutOfMemmory로 인해 실패하는 경우 최대 맵과 축소 기의 개수를 트위 킹 할 수 있으며 JVM은 절대로 발생하지 않도록 선택합니다. mapred.child.java.opts (기본값은 200Xmx)는 일반적으로 데이터 노드의 특정 하드웨어에 따라 증가되어야합니다.

    작업이 실패합니까? 아니면 서버가 충돌합니까? 작업이 노드의 OutOfMemmory로 인해 실패하는 경우 최대 맵과 축소 기의 개수를 트위 킹 할 수 있으며 JVM은 절대로 발생하지 않도록 선택합니다. mapred.child.java.opts (기본값은 200Xmx)는 일반적으로 데이터 노드의 특정 하드웨어에 따라 증가되어야합니다.

    http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/

    최대 작업은 네임 노드에서 설정하거나 다른 하드웨어 구성을 가질 수있는 데이터 노드에서 재정의 (및 최종 설정) 할 수 있습니다. 최대 작업은 매퍼와 리듀서 모두에 대해 설정됩니다. 이를 계산하려면 CPU (코어)와 보유 RAM 용량, 그리고 mapred.child.java.opts에서 설정 한 JVM 최대 값 (기본값은 200)을 기반으로합니다. Datanode와 Tasktracker는 각각 1GB로 설정되어 있으므로 8GB 시스템의 경우 mapred.tasktracker.map.tasks.maximum을 7로 설정하고 mapred.tasktracker.reduce.tasks.maximum을 mapred.child.java로 7로 설정합니다 .opts는 -400Xmx로 설정됩니다 (8 코어라고 가정). CPU가 1 개이고 코어가 1 개인 경우 데이터 작업 노드를위한 새로운 하드웨어를 얻거나 마스크 작업을 1로 설정해야합니다. 4 개의 코어가있는 CPU가 1 개인 경우 맵을 3으로 설정하고 3으로 줄이는 것이 좋을 것입니다 (데몬의 경우 1 코어 저장).

    기본적으로 감속기는 하나뿐이므로 mapred.reduce.tasks를 둘 이상으로 구성해야합니다. 이 값은 노드 당 최대 작업 수에 데이터 노드 수를 곱한 값의 0.95 배와 1.75 배 사이 여야합니다. 따라서 3 개의 데이터 노드가 있으며 최대 작업 수를 7로 설정 한 경우 25와 36 사이의 값으로 구성하십시오.

    서버가 OutOfMemory 문제로 인해 충돌하는 경우 HADOOP_HEAPSIZE가 프로세스 힙 (프로세스 실행이 아닌)에만 제공됩니다.

    마지막으로 Job이 오래 걸리면 mapred.compress.map.output이라는 또 다른 좋은 설정이 있는지 확인할 수 있습니다. 이 값을 true로 설정하면 대용량 데이터 세트로 작업 할 때 크게 복사기 복사 속도를 크게 높일 수 있습니다 (대 전송 압축 시간 사이의 균형). 종종 작업에는 시간이 걸리지 만 작업 속도를 높이기 위해 조정할 수있는 옵션도 있습니다. = 8 ^)

  2. from https://stackoverflow.com/questions/3383402/how-to-avoid-outofmemoryexception-when-running-hadoop by cc-by-sa and MIT license