2010-08-01 6 views
14

많은 패턴 일치를 수행하면서 1.5TB 이상의 데이터를 처리하는 Hadoop 작업을 실행 중입니다. 나는 각각 16GB RAM을 가진 여러 머신을 가지고 있는데, 나는이 데이터를 가지고이 작업에 항상 OutOfMemoryException을 얻는다 (나는 Hive를 사용하고있다).Hadoop을 실행할 때 OutOfMemoryException을 피하는 방법은 무엇입니까?

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

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

나는 최적의 설정으로 더 많은 실험을하고 있지만 그 작업은 10 시간 이상 걸릴 것이기 때문에 조언을 구하는 중입니다.

+0

'HADOOP_HEAPSIZE'는 (는) 실패를 피하지 않는 이유는 무엇입니까? 당신의 경험에서와 같이 들립니다. 데이터/작업을 조사 할 때만 알 수있는 이유 때문에 적어도 힙 크기는 큰 것이 좋습니다. 그렇게 큰 힙이 필요하지 않도록 작업을 리팩터링 할 수 있습니까? –

+0

나는 커다란 힙을 사용하지 않으므로 내 작업을 수정했지만, 이번에는'HADOOP_HEAPSIZE'를 변경했습니다. 그리고 나는이 샹의 실제 결과를 보지 못했습니다. 왜 힙을 amount_of_my_RAM/number_of_mappers_or_reducers보다 작게 설정해야합니까? – wlk

답변

13

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

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

최대 작업은 네임 노드에 설치 또는 오버라이드 (override) 할 수 (최종 설정) 다른 하드웨어 구성을 가질 수있다 데이터 노드에 있습니다. 최대 작업은 매퍼와 리듀서 모두에 대해 설정됩니다. 이것을 계산하기 위해서는 CPU (코어)와 보유하고있는 RAM의 양, mapred.child.java.opts (기본값은 200)에 설정된 JVM max를 기반으로합니다. 데이터 노드와 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 개의 코어가있는 1 개의 CPU가있는 경우 맵을 3으로 설정하고 3으로 줄이는 것이 좋을 것입니다 (데몬의 경우 1 코어 절약).

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

서버가 OutOfMemory 문제로 인해 충돌하는 경우 HADOOP_HEAPSIZE가 프로세스 힙 작업 실행).

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

관련 문제