11 노드 클러스터에서 실행중인 EMR 작업이 있다고 가정 해보십시오. m1.small 마스터 노드와 10 m1.xlarge 슬레이브 노드.힙 메모리와 함께 병렬 맵퍼/리듀서의 수를 결정하는 방법은 무엇입니까?
이제 하나의 m1.xlarge 노드에 15GB의 RAM이 있습니다.
어떻게 설정할 수있는 평행 매퍼와 리듀서의 수를 결정할 것인가?
내 직업은 메모리를 많이 사용하기 때문에 점점 더 많은 힙을 JVM에 할당하고 싶습니다.
또 다른 관련 질문 : 우리는 다음과 같은 매개 변수를 설정하는 경우 :
<property><name>mapred.child.java.opts</name><value>-Xmx4096m</value></property>
<property><name>mapred.job.reuse.jvm.num.tasks</name><value>1</value></property>
<property><name>mapred.tasktracker.map.tasks.maximum</name><value>2</value></property>
<property><name>mapred.tasktracker.reduce.tasks.maximum</name><value>2</value></property>
그래서이 4기가바이트이 4 개 공정 (2 매퍼 및 2 감속기)에 의해 공유됩니다 또는 모두가 각각 4GB의 얻을 것이다?
좋아, m1.xlarge 위해 우리는 RAM 15GB의 가지고,하지만 난 다음 16 GB의 총 것, 2 매퍼 2 감속기라고 그래서,이 좋아해요 그리고 그것은 가장자리에있는 나쁜 생각이다? – Amar
시도해보고 :-) OOME을 얻으면 힙 공간을 줄여야합니다. 이 시점에서 시행 착오입니다. 클러스터 설정을 테스트하는 좋은 방법은 contrib tera-sort mapreduce 작업을 사용하는 것입니다. 이렇게하면 런타임 기준을 벤치마킹 할 수 있습니다. 또한 io.sort.mb를 얼마나 많은 RAM이 있는지에 따라 더 높은 값으로 업데이트하려고 할 수 있습니다. –