문제

MapReduce 알고리즘과 수백만 개의 기계로 스케일링 할 수있는 방법을 배우고 있지만, 맵 단계 이후 중간 키의 분류가 어떻게 확장 될 수 있는지 이해하지 못합니다.

1,000,000 x 1,000,000

: 중간 결과의 작은 키 / 값 쌍을 통신하는 잠재적 인 기계는? 병목 현상이 아닌가요?

도움이 되었습니까?

해결책

Hadoop Mapreduce의 병목 현상 중 하나는 클러스터의 기계 간 네트워크 대역폭이라는 것은 사실입니다. 그러나 각 맵 단계의 출력이 클러스터의 모든 컴퓨터로 전송되지는 않습니다.

맵 및 감소 함수의 수는 실행중인 작업에 의해 정의됩니다. 각 맵은 입력 데이터를 처리하고 키를 그룹화하도록 정렬하여 디스크에 씁니다. 작업은 맵의 출력에 적용하려는 얼마나 많은 감소 기능을 정의합니다.

각 감소는 주어진 키에 대한 모든 데이터를 볼 필요가 있습니다. 따라서 작업에 대한 단일 감소 실행이있는 경우 각 맵의 모든 출력은 실행중인 클러스터의 노드로 전송되어야합니다. 감소가 실행되기 전에 각 맵의 데이터가 병합되어 모든 키를 그룹화합니다.

다중 리더러가 사용되면 맵은 출력을 분할하여 축소 당 하나를 만듭니다. 파티션은 올바른 감소로 전송됩니다. 이를 통해 주어진 키의 모든 데이터가 단일 감소로 처리되고 있습니다.

네트워크를 통해 전송되는 데 필요한 데이터의 양을 줄이기 위해 맵의 출력에 결합 기능을 적용 할 수 있습니다. 이것은 맵에서 출력을 줄이는 효과가 있습니다. 따라서 감속기로 전송 해야하는 데이터의 양을 최소화하고 전체 작업의 실행 시간을 가속화 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top