복붙노트

[HADOOP] TaskTracker 하위 프로세스에 메모리를 구성하는 다양한 방법 (Mapper 및 Reduce Tasks)

HADOOP

TaskTracker 하위 프로세스에 메모리를 구성하는 다양한 방법 (Mapper 및 Reduce Tasks)

Mapper 및 Reduce 작업에서 사용하는 최대 메모리를 제어하기 위해 mapred.job.map.memory.mb와 mapred.child.java.opts를 -Xmx를 사용하여 설정하는 것의 차이점은 무엇입니까? 우선 순위는 어느 것입니까?

해결법

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

    1.-Xmx는 할당 된 jvm의 최대 힙 공간을 지정합니다. 이것은 가비지 수집기가 관리하는 객체 할당을 위해 예약 된 공간입니다. 반면, mapred.job.map.memory.mb는 Hadoop 작업 하위 프로세스가 허용하는 최대 가상 메모리를 지정합니다. 최대 힙 크기를 초과하면 JVM은 OutOfMemoryException을 발생시킵니다.

    -Xmx는 할당 된 jvm의 최대 힙 공간을 지정합니다. 이것은 가비지 수집기가 관리하는 객체 할당을 위해 예약 된 공간입니다. 반면, mapred.job.map.memory.mb는 Hadoop 작업 하위 프로세스가 허용하는 최대 가상 메모리를 지정합니다. 최대 힙 크기를 초과하면 JVM은 OutOfMemoryException을 발생시킵니다.

    JVM은 객체 정의 (permgen 공간)와 스택을 저장할 공간이 필요하기 때문에 최대 힙 크기보다 많은 메모리를 사용할 수 있습니다. 프로세스가 mapred.job.map.memory.mb보다 더 많은 가상 메모리를 사용하면 hadoop에 의해 kill됩니다.

    그래서 하나는 다른 것보다 우선권이 없으며 (메모리 사용의 다른 측면을 측정합니다), -Xmx는 JVM에 대한 매개 변수이고 mapred.job.map.memory.mb는 가상 메모리의 하드 상한입니다 작업 시도가 사용 가능하며, hadoop에 의해 시행됩니다.

    희망이 도움이됩니다, 메모리가 복잡합니다! 나는 현재 내 JVM 프로세스가 내 SO 게시물의 가상 메모리에서 최대 힙 크기의 여러 배수를 사용하는 이유에 대해 혼란 스럽다.

  2. from https://stackoverflow.com/questions/8027817/different-ways-of-configuring-the-memory-to-the-tasktracker-child-process-mappe by cc-by-sa and MIT license