2014-04-28 2 views
-1

4 개의 노드가 있고 mapreduce 샘플 프로젝트를 실행하여 작업이 4 개 노드 사이에 분산되어 있는지 확인합니다. 프로젝트를 여러 번 실행하고 매퍼 태스크가 4 개의 노드 모두로 분할되어 있지만 감속기 태스크가 하나의 노드에서만 수행되고 있음을 알았습니다. 이것은 4 개 노드 사이에서 분할 될 것으로 가정되는 감속기 작업 일 수 있습니다. 하둡 맵/작업 배분 축소

는 맵퍼

+0

방금 ​​물어 본 것과 비슷한 질문은 여기에서 찾을 수 있습니다. http://stackoverflow.com/questions/6885441/setting-the-number-of-map-tasks-and-reduce-tasks – Sudarshan

답변

0

배포는 매퍼가 작동 할 데이터의 어느 블록에 따라 달라집니다 주셔서 감사합니다. 프레임 워크는 기본적으로 데이터 블록이 저장된 노드에 작업을 할당하려고합니다. 이렇게하면 데이터가 네트워크로 전송되지 않습니다.

환원제는 다시 아니오에 따라 다릅니다. 귀하의 직업에 필요한 감속기의 당신의 직업이 단지 하나의 감속기만을 사용한다면 그것은 어떤 노드에 할당 될 수 있습니다.

또한 이것에 영향을주는 것은 추측 실행입니다. on으로 설정하면 map/task의 여러 인스턴스가 서로 다른 노드에서 시작하도록 작업을 완료하고 % 완료를 기반으로하는 작업 추적기가 어느 노드가 통과하고 다른 인스턴스가 종료 될지 결정합니다.

0

224MB 파일을 보겠습니다. 64 메가 바이트의 기본 블록 크기에 따라 HDFS에 해당 파일을 추가 할 때 파일은 4 개 블록 [BLK1 = 64M, BLK2 = 64M, BLK3 = 64M, 로 분할된다 blk4 = 32M]. 노드 3, BLK4 : 노드 4 우리가 노드 1의 BLK1 가정 해 보자는 BLK1 :: 같은 노드 1, BLK2 :: 노드 2, BLK3을 나타낸다. 이제 MR을 실행할 때지도가 입력 파일에 액세스해야합니다. 따라서 MR FWK는 4 개의 매퍼를 만들고 각 노드에서 실행됩니다. Venkat이 말하듯이 이제는 감속기가 출시됩니다. 감속기는 Hadoop org.apache.hadoop.mapreduce.Job setNumReduceTasks (int tasks) API를 사용하여 구성 할 수 있습니다.