2012-04-17 2 views
1

안녕하세요 ... 조금 혼란 스럽네요. 감축 과제와 감원 과제의 차이점은 무엇입니까? 여기에 내 경우입니다; 나는 모든 매핑이 ... 완료 될 때까지 시작되지 않습니다 감소 읽었습니다하지만 하둡 출력에 나는 그렇지 참조 :모든 맵퍼가 완료된 경우에만 작업 줄이기?

12/02/11 10:58:50 INFO mapred.JobClient: map 60% reduce 16% 
12/02/11 10:58:54 INFO mapred.JobClient: map 60% reduce 20% 
12/02/11 10:58:55 INFO mapred.JobClient: map 65% reduce 20% 

가 감소지도 동안 16 %가 여전히 60 % ... 입니다 무엇 여기서 정말로 일어나고있는거야?

답변

14

"단계 감소"에는 셔플, 정렬, 감소의 세 단계가 있습니다. 셔플은 데이터를 복사하고 정렬은 키를 그룹화합니다. 축소는 실제로 작성한 reduce 함수입니다.

비율이 작동하는 방식은 셔플이 33 %, 정렬이 33 %, 축소가 33 %입니다. 당신이보고있는 것은 "데이터의 약 16 %/33 % (48 %)가 감속기에 복사되었습니다"입니다. "축소"의 최종 33 %는 모든 매퍼가 완료 될 때까지 시작할 수 없습니다.

4

첫 번째 매퍼가 입력 처리를 마자 마자 출력 매퍼가 복사를 시작하지만 모든 매퍼가 작업을 완료 할 때까지 축소 기가 입력을 처리 할 수 ​​없습니다. 이것의 배경은 감속기가 미완성 맵퍼에서 더 많은 입력 데이터를 수신 할 수 있기 때문에 입력을 처리하는 순서를 변경할 수 있기 때문입니다.

콘솔에서 볼 수있는 감속기의 완료율은 감속기가 매퍼에서 데이터를 복사하는 중임을 나타냅니다.

관련 문제