3

기본적으로 EMR 작업 중에 인스턴스는 매퍼보다 축소 기가 적게 구성됩니다. 그러나 감속기에는 여분의 기억이 주어지지 않으므로 동일한 양을 가질 수 있어야합니다. 예를 들어, 초대형 하이 cpu 인스턴스에는 7 개의 매퍼가 있지만 리덕터는 2 개 뿐이지 만 매퍼와 축소 기는 512 MB의 메모리로 구성됩니다.왜 EMR 인스턴스에는 매퍼만큼 많은 축소 기가 있습니까?

왜이 사람이 알고 있으며 매퍼로 많은 수비수를 사용하도록 지정할 수있는 방법이 있습니까?

편집 : 나는 양이 잘못했다, 그것은 512메가바이트

+1

지금은 이해할 수 있지만 확실하지 않습니다. http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/HadoopMemoryDefault_AMI2.html에 나열된 메모리 양은 모든 맵퍼 또는 모든 감속기에서 확인할 수 있습니다. 모두 동일한 JVM – dspyz

답변

3

매퍼가 입력 스트림 (매퍼의 STDIN)에서 데이터를 추출, 그리고 그들이 방출하는 것은 훨씬 더 컴팩트. 그 아웃 바운드 스트림 (매퍼의 STDOUT)은 또한 키에 의해 정렬됩니다. 따라서 감속기는 수신시 작고 정렬 된 데이터를 갖습니다.

EMR뿐만 아니라 모든 Hadoop MapReduce 클러스터의 기본 구성이 작업 추적기에서 사용할 수있는 코어 수에 비례하여 감속기보다 많은 매퍼를 갖는 이유가 바로 그 때문입니다.

jobconf 매개 변수를 통해 맵퍼 및 리듀서의 수를 제어 할 수 있습니다. 구성 변수는 mapred.map.tasks 및 mapred.reduce.tasks입니다.

+0

에서 실행되기 때문에 감속기가 아닙니다. JVM의 할당 된 메모리가 같은 이유 (512MB), 모든 축소기에 적용 되는가 또는 축소 기마다 있습니까? 더욱 중요한 것은, 감속기에 더 많은 메모리를 안전하게 줄 수 있습니까? – dspyz

+0

기본 구성입니다. 다른 버전으로 돌아 가면이 수식 중 일부는 베스트 프랙티스 (특히 리듀서에 대한 매퍼의 비율)의 결과라는 것을 알 수 있습니다. 참조 : http://hadoop.apache.org/common/docs /r0.20.0/mapred_tutorial.html#Reducer. 이 문서 아래에는 힙 크기를 포함한 메모리 관리에 대한 설명이 있습니다. 이것들은 모두 구성 가능하므로 감속기가 다른 행동 프로파일을 가지고 있다면 Hadoop 작업이 어떻게 작동하는지 (EMR 포함) 수정할 수 있습니다. –

+0

제 질문은 다른 모든 메모리가 사용되는 것입니다. c1.xlarge 인스턴스는 7GB로되어 있지만 각 태스크에 512MB 만 할당됩니다. 나머지 메모리를 모두 사용하고있는 것이 있습니까? 4GB로 변경하면 인스턴스의 메모리가 부족합니까? 결과적으로 다른 문제가 발생합니까? – dspyz

관련 문제