많은 패턴 일치를 수행하면서 1.5TB 이상의 데이터를 처리하는 Hadoop 작업을 실행 중입니다. 나는 각각 16GB RAM을 가진 여러 머신을 가지고 있는데, 나는이 데이터를 가지고이 작업에 항상 OutOfMemoryException
을 얻는다 (나는 Hive를 사용하고있다).Hadoop을 실행할 때 OutOfMemoryException을 피하는 방법은 무엇입니까?
hadoop-env.sh
파일에 옵션 HADOOP_HEAPSIZE
을 최적으로 설정하는 방법을 알고 싶습니다. 제 작업이 실패하지 않을 것입니다. 내 작업이 실패하지 않도록이 옵션을 설정하는 것도 가능합니까?
HADOOP_HEAPSIZE
을 1,5GB로 설정하고 쿼리에서 패턴 일치의 절반을 제거하면 작업이 성공적으로 실행됩니다. 직업 선택을 피하는 데 도움이되지 않는다면이 옵션은 무엇입니까?
나는 최적의 설정으로 더 많은 실험을하고 있지만 그 작업은 10 시간 이상 걸릴 것이기 때문에 조언을 구하는 중입니다.
'HADOOP_HEAPSIZE'는 (는) 실패를 피하지 않는 이유는 무엇입니까? 당신의 경험에서와 같이 들립니다. 데이터/작업을 조사 할 때만 알 수있는 이유 때문에 적어도 힙 크기는 큰 것이 좋습니다. 그렇게 큰 힙이 필요하지 않도록 작업을 리팩터링 할 수 있습니까? –
나는 커다란 힙을 사용하지 않으므로 내 작업을 수정했지만, 이번에는'HADOOP_HEAPSIZE'를 변경했습니다. 그리고 나는이 샹의 실제 결과를 보지 못했습니다. 왜 힙을 amount_of_my_RAM/number_of_mappers_or_reducers보다 작게 설정해야합니까? – wlk