mapreduce에 대해 배웠을 때 주요 구성 요소 중 하나는 결합 자입니다. 이는 매퍼가 출력하는 데이터 라인 수를 줄이기 위해 맵 위상의 끝에서 감속기를 본질적으로 실행하는 매퍼와 감속기 사이의 단계입니다. 처리량을 늘리는 데 필요한 데이터의 크기 (밀리미터 테라 바이트 규모)가 커짐에 따라 감축 단계가 너무 느려집니다. 나는 내 친구와 이야기를 나눴다. 그는이 역시 그의 경험이었고 결합자를 사용하는 대신 축소 단계에서 각 키로가는 값의 수를 줄이는 해시 함수를 사용하여 축소 키를 나눕니다 . 나는 이것을 시도했고 효과가 있었다. 다른 사람이 결합기 단계에서 잘 확장되지 않는 경험이 있었고 해결 방법과 함께이 문제에 대한 문서를 찾을 수없는 이유는 무엇입니까? 나는 combiner 단계 규모를 만드는 방법이 있다면 해결 방법을 사용하지 않을 것입니다.hadoop streaming mapreduce에서 결합기 사용 (mrjob 사용)
[EDIT] 여기서 결합기보다 빠르게 작동 친구가 제안한 대안의 예이다 : 맵퍼 출력
(word, hash(timestamp) % 1024), count
대신 word, count
출력이어서 거기 2 단계를 줄여 매퍼의 결과를 병합하십시오.
계산이 부분 계산을 허용하고, 설명 된 해결 방법은 결합 단계가 아닌 별도의 축소 단계와 마찬가지로 부분 계산을 수행합니다. 나는 combiner로서 이것을 할 때 왜 그렇게 느린 지 알고 싶다. 그러나 reduce 키를 partition 할 때, 잘 동작하는 것처럼 보인다. – Narek
다음은 예제입니다 :'word, count'를 출력하는 대신 매퍼가'(word, hash (timestamp) % 1024), count'를 출력 한 다음 파티션 내에 단어를 추가하는 추가 축소 단계가 있습니다. 나는이 방법을 내가 처음 보았을 때 회의적 이었지만 어떻게 든 결합자를 사용하는 것보다 훨씬 빠릅니다. – Narek
그리고 나서 감속기에서 나오는 부분 결과를 다시 집계 하시겠습니까? –