복붙노트

[HADOOP] MapReduce의 파티셔닝은 정확히 어떻게 작동합니까?

HADOOP

MapReduce의 파티셔닝은 정확히 어떻게 작동합니까?

필자는 MapReduce 프로그래밍 모델을 일반적으로 잘 이해하고 있다고 생각하지만 원래의 종이 및 기타 소스를 읽은 후에도 특히 중간 결과를 분할하는 것과 관련하여 많은 세부 사항이 명확하지 않습니다.

지금까지 MapReduce에 대한 나의 이해를 요약하여 요약 해 보겠다. 우리는 잠재적으로 매우 큰 입력 데이터 세트를 가지며, 이는 MR- 프레임 워크에 의해 M 개의 다른 부분으로 자동 분할된다. 각 구성 요소에 대해 프레임 워크는 클러스터에서 사용 가능한 프로세서 / 머신 중 하나에 의해 실행되는 하나의 맵 작업을 예약합니다. M 맵 작업 각각은이 맵 작업을 실행 한 동일한 컴퓨터에 로컬로 저장되는 키 - 값 - 쌍 집합을 출력합니다. 각 기계는 디스크를 R 파티션으로 분할하고 중간 키를 기반으로 계산 된 중간 키 값 쌍을 파티션간에 분배합니다. 그런 다음 프레임 워크는 사용 가능한 모든 기계에서 다시 실행되는 각각의 중간 키 하나 축소 작업마다 시작됩니다.

이제 내 질문은 :

개념적으로지도의 입력과 출력 및 기능 / 작업 감소가 무엇인지 분명합니다. 그러나 아직 기술 수준에서 MapReduce를 이해하지 못했다고 생각합니다. 이해 좀 도와 주실 래요?

해결법

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

    1.또한 중간 키의 해시 및 변형을 이해하고 (기본 HashPartitioner를 사용하는 경우) 해당 키를 처리 할 축소 파티션을 결정하는 것이 중요합니다. 감속기 작업 (10)을 짝수로하고 출력 키를 항상 짝수로 해시하면 -이 경우 해시 수와 10의 모듈로는 항상 짝수가됩니다. 즉, 홀수 번호의 감속기는 어떤 데이터도 결코 처리하지 말라.

    또한 중간 키의 해시 및 변형을 이해하고 (기본 HashPartitioner를 사용하는 경우) 해당 키를 처리 할 축소 파티션을 결정하는 것이 중요합니다. 감속기 작업 (10)을 짝수로하고 출력 키를 항상 짝수로 해시하면 -이 경우 해시 수와 10의 모듈로는 항상 짝수가됩니다. 즉, 홀수 번호의 감속기는 어떤 데이터도 결코 처리하지 말라.

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

    2.크리스가 말한 것에 대한 부록,

    크리스가 말한 것에 대한 부록,

    기본적으로 Hadoop의 파티션 클래스 (예 : Default HashPartitioner)

    이 기능을 구현해야합니다.

    int getPartition(K key, V value, int numReduceTasks) 
    

    이 함수는 파티션 번호를 반환하고 HashPartitioner 에서처럼 numReduceTasks 변수에서 작업을 시작할 때 수정 한 리듀서 수를 가져옵니다.

    위의 함수가 반환하는 정수를 기반으로 Hadoop은 특정 키에 대한 reduce 작업이 실행되어야하는 노드를 선택합니다.

    희망이 도움이됩니다.

  3. from https://stackoverflow.com/questions/17734468/how-does-partitioning-in-mapreduce-exactly-work by cc-by-sa and MIT license