2014-10-13 3 views
0

하둡은 해당 매퍼가 실행되는 기계에서 감속기를 점화하는 경향이 있습니다. 100 개의 매퍼와 1 개의 감속기가 있다면 어떨까요? 매퍼가 로컬 디스크에 데이터를 저장한다는 것을 알고 있으므로 매핑 된 모든 데이터가 단일 감속기로 전송됩니까?감속기가 하나만있는 경우

답변

2

예, 감속기가 하나뿐이면 모든 데이터가 해당 감속기로 전송됩니다.

각 사상 처음 로컬 버퍼 (100메가바이트 기본)의 출력을 저장하고, 상기 버퍼는 io.sort.spill.percent 의해 정의 된 특정 비율로 충전되는 경우, 그 결과를 디스크에 유출 된 정의한다

작성자 : mapred.local.dir. 각 매퍼의 출력이 mapred.reduce.parallel.copies 병렬 스레드에 의해 복사되는이 파일은 복사 단계 동안 감속기에에 복사됩니다

. (기본 5)

0

감속기 번호를 하나 (job.setNumReduceTasks (1) 또는 -Dmapred.reduce.tasks = 1)로 수정하면 매퍼의 모든 데이터가 모든 키를 처리 할 하나의 감속기로 전송됩니다.

0

이있는 경우 단 1 개의 감속기 만 있으면 모든 데이터가 감속기로 전송되고 모든 출력이 단일 파일로 HDFS에 저장됩니다. 감속기를 제공하지 않으면 감속기의 기본 번호는 1입니다.

job.setNumReduceTasks (__)을 사용하여 축소 자 수를 설정할 수 있으며 ToolRunner를 사용하는 경우 명령 줄 자체를 통해 축소 자 수를 설정할 수 있습니다. -Dmapred.reduce.tasks = 4

관련 문제