[HADOOP] 결합기 입력 수가 맵의 출력 수보다 많은 이유는 무엇입니까?
HADOOP결합기 입력 수가 맵의 출력 수보다 많은 이유는 무엇입니까?
컴 바이 너는 매퍼 이후 및 리듀서 이전에 실행되며 지정된 노드에서 매퍼 인스턴스가 생성 한 모든 데이터를 입력으로 수신합니다. 그런 다음 감속기로 출력을 내 보냅니다. 따라서 결합기 입력의 레코드는 맵 출력보다 작아야합니다.
12/08/29 13:38:49 INFO mapred.JobClient: Map-Reduce Framework
12/08/29 13:38:49 INFO mapred.JobClient: Reduce input groups=8649
12/08/29 13:38:49 INFO mapred.JobClient: Map output materialized bytes=306210
12/08/29 13:38:49 INFO mapred.JobClient: Combine output records=859412
12/08/29 13:38:49 INFO mapred.JobClient: Map input records=457272
12/08/29 13:38:49 INFO mapred.JobClient: Reduce shuffle bytes=0
12/08/29 13:38:49 INFO mapred.JobClient: Reduce output records=8649
12/08/29 13:38:49 INFO mapred.JobClient: Spilled Records=1632334
12/08/29 13:38:49 INFO mapred.JobClient: Map output bytes=331837344
12/08/29 13:38:49 INFO mapred.JobClient: **Combine input records=26154506**
12/08/29 13:38:49 INFO mapred.JobClient: **Map output records=25312392**
12/08/29 13:38:49 INFO mapred.JobClient: SPLIT_RAW_BYTES=218
12/08/29 13:38:49 INFO mapred.JobClient: Reduce input records=17298
해결법
-
==============================
1.나는 Combiner가 이전 Combine 단계의 출력에서 실행될 수 있기 때문에, Combiner가 실행되고 새 레코드를 생성 한 다음 Mappers에서 나오는 다른 레코드와 결합되기 때문입니다. 또한 컴 바이 너가 실행 된 후 맵 출력 레코드가 계산 될 수 있습니다. 이는 일부가 결합 되었기 때문에 더 적은 레코드가 있음을 의미합니다.
나는 Combiner가 이전 Combine 단계의 출력에서 실행될 수 있기 때문에, Combiner가 실행되고 새 레코드를 생성 한 다음 Mappers에서 나오는 다른 레코드와 결합되기 때문입니다. 또한 컴 바이 너가 실행 된 후 맵 출력 레코드가 계산 될 수 있습니다. 이는 일부가 결합 되었기 때문에 더 적은 레코드가 있음을 의미합니다.
from https://stackoverflow.com/questions/12171965/why-is-the-number-of-combiner-input-records-more-than-the-number-of-outputs-of-m by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 로컬 호스트에서만 액세스 할 수있는 하둡 작업 추적기 (0) | 2019.08.07 |
---|---|
[HADOOP] JA017 : 조회 할 수 없음 hadoop 작업 ID (0) | 2019.08.07 |
[HADOOP] REGEX를 사용하여 Hive 만들기 및로드 쿼리에서 Null 값 가져 오기 (0) | 2019.08.07 |
[HADOOP] hadoop pig 문에서 생성 된 mapreduce 코드를 볼 수있는 곳 (0) | 2019.08.07 |
[HADOOP] 콘솔에서 Hadoop 로깅 메시지를 표시하지 않는 방법 (0) | 2019.08.07 |