긱 먼지

4월 24, 2021

하둡의 하둡 시리즈 소개의 첫 번째 게시물과지도 감소 프로그램을 실행,나는지도 감소의 기초를 설명했다. 이 게시물에서 나는 분할,셔플,결합기,병합,정렬과 같은 다양한 구성 요소를 먼저 설명하고 작동 방식을 설명합니다.

파티셔닝:

감속기 수가 2 이고 해시 함수가:

#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}

그런 다음 키 1:

파티션 번호=해시(1) % 2 = 1;

열쇠 2 를 위해:

파티션 번호=해시(2) % 2 = 0;

키 4:

파티션 번호=해시(4) % 2 = 0;

즉,키 1 의 출력은 파티션 _1 에 들어가고 키 2 와 4 의 출력은 파티션 _0 에 들어갑니다.

셔플:

맵 작업의 최종 출력에는 여러 파티션이 있을 수 있으며 이러한 파티션은 다른 축소 작업으로 이동해야 합니다. 셔플은 기본적으로 맵 출력 파티션을 해당 축소 작업으로 전송합니다. 맵 작업 알림 응용 프로그램 마스터 맵 작업 완료 및 응용 프로그램 마스터에 대해 맵 출력을 축소 기계로 복사하도록 해당 감속기에 알립니다.

결합기:

정렬:

키를 기반으로 데이터를 정렬하는 것입니다.

병합:

이것은 감속기 측에서 발생합니다. 감속기는 여러 맵 작업에서 데이터를 얻을 수 있으며 병합을 통해 서로 다른 맵 작업의 데이터를 하나의 단일 단위로 병합하여 정렬 순서를 유지합니다.

지도-자세히 줄이기:

지도:

메모리circular buffer가 있고 버퍼에 직접 씁니다. 버퍼가 임계 값(기본값 80%)에 도달하면 별도의background thread을 통해spill file에 쓰기 시작합니다. 맵 작업은 백그라운드 스레드가 실행되는 동안 여전히 출력을 버퍼에 쓸 수 있습니다. 유출 파일에 쓰기 전에 키-값 쌍 인 맵 출력이 분할되고 정렬됩니다. 결합기가있는 경우,그것은 또한 출력 크기를 감소 실행 가져옵니다.

작업이 끝나면 모든 유출 파일이 다시 정렬되고 분할 및 정렬되는 단일 파일이 생성됩니다. 이 최종 출력 파일에 여러 파티션이 있음을 의미합니다. 노드에 대한 맵 작업 완료 후 그 출력은 감속기로 전송됩니다. 그래서 지도가<100%보다 작은 동안 작업을 0%이상 줄이는 것을 볼 수 있습니다.

맵 전용 작업이 있는 경우 셔플이 전혀 없습니다.

축소:

맵 작업에서 데이터를 가져온 후merge phase동안 데이터를 하나의 단위로 병합합니다. 모든 파일을 하나로 직접 병합하는 대신merge factor이라는 개념을 사용합니다.이 개념은 디스크에 기록 된 데이터의 양을 최소화하는 것입니다. 그런 다음 축소 단계에서 정렬된 출력의 각 키에 대해 축소 함수가 호출됩니다. 이 단계의 출력은 출력 파일 시스템에 직접 기록됩니다.

유용한 링크:

소개 및 원사의 작업

답글 남기기

이메일 주소는 공개되지 않습니다.