복붙노트

[HADOOP] Hadoop MapReduce : 감속기 수에 대한 설명

HADOOP

Hadoop MapReduce : 감속기 수에 대한 설명

MapReduce 프레임 워크에서는 매퍼가 생성 한 각 키에 대해 하나의 축소 기가 사용됩니다.

따라서 Hadoop MapReduce에서 리 듀서의 개수를 지정하는 것은 프로그램에 의존하기 때문에 아무런 의미가 없다고 생각할 수 있습니다. 그러나 Hadoop을 사용하면 사용할 감속기의 수를 지정할 수 있습니다 (-D mapred.reduce.tasks = 감속기 수).

이것은 무엇을 의미 하는가? 감속기 수에 대한 매개 변수 값은 실제 감속기 수 대신 감속기로 이동하는 기계 리소스 수를 지정합니까?

해결법

  1. ==============================

    1.이 의견은 정확하지 않습니다. reduce () 메서드에 대한 한 번의 호출은 그룹화 비교 자로 그룹화 된 각 키에 대해 수행됩니다. 감속기 (작업)는 0 개 이상의 reduce () 호출을 처리하는 프로세스입니다. 당신이 참조하는 속성은 감속기 작업의 수를 말하는 것입니다.

    이 의견은 정확하지 않습니다. reduce () 메서드에 대한 한 번의 호출은 그룹화 비교 자로 그룹화 된 각 키에 대해 수행됩니다. 감속기 (작업)는 0 개 이상의 reduce () 호출을 처리하는 프로세스입니다. 당신이 참조하는 속성은 감속기 작업의 수를 말하는 것입니다.

  2. ==============================

    2.@ Judge Mental (매우 정확한) 답변을 간단하게 단순화하려면 : 감속기 작업은 한 번에 많은 키에서 작동 할 수 있지만 mapred.reduce.tasks = # 매개 변수는 특정 작업에 대해 동시에 실행될 감속기 작업 수를 선언합니다.

    @ Judge Mental (매우 정확한) 답변을 간단하게 단순화하려면 : 감속기 작업은 한 번에 많은 키에서 작동 할 수 있지만 mapred.reduce.tasks = # 매개 변수는 특정 작업에 대해 동시에 실행될 감속기 작업 수를 선언합니다.

    mapred.reduce.tasks = 10 인 경우의 예 : 2,000 개의 키가 있습니다. 각 키의 값은 50입니다 (균등하게 분산 된 10,000 k : v 쌍의 경우). 각 감속기는 대략 200 개의 키 (1,000 k : v 쌍)를 처리해야합니다.

    mapred.reduce.tasks = 20 인 경우의 예입니다. 2,000 개의 키가 있습니다. 각 키의 값은 50입니다 (균등하게 분산 된 10,000 k : v 쌍의 경우). 각 감속기는 대략 100 개의 키 (500 k : v 쌍)를 처리해야합니다.

    위의 예에서 각 감속기가 작동해야하는 키가 적을수록 전체 작업이 더 빨라집니다 ... 물론 클러스터에서 사용 가능한 감속기 리소스가있는 한.

  3. from https://stackoverflow.com/questions/22360871/hadoop-mapreduce-clarification-on-number-of-reducers by cc-by-sa and MIT license