복붙노트

[HADOOP] Combiner 또는 Partitioner를 누가 먼저 실행할 수 있습니까?

HADOOP

Combiner 또는 Partitioner를 누가 먼저 실행할 수 있습니까?

Hadoop-Definitive Guide 4th edition (페이지 204)의 기사를 읽은 후 혼란스러워합니다.

내 의심은 여기있다 :

1) 누가 첫 번째 결합기 또는 파티션을 실행할 것인가 !!

2) 커스텀 컴 바이 너와 커스텀 파티션은 언제 어떻게 실행 단계 계층 구조가됩니까?

3) 우리는 압축 데이터 (avro, 시퀀스 .. 등) 사용자 정의 결합하는 경우, 그렇다면 어떻게!

간단하고 깊이있는 설명을 찾고 있습니다 !!

미리 감사드립니다.

해결법

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

    1.1 / 응답은이 부분에서 이미 지정되어 있습니다. "각 파티션에서 백그라운드 스레드는 키별로 메모리 내 정렬을 수행하며 결합기 기능이있는 경우 정렬 출력에서 ​​실행됩니다."

    1 / 응답은이 부분에서 이미 지정되어 있습니다. "각 파티션에서 백그라운드 스레드는 키별로 메모리 내 정렬을 수행하며 결합기 기능이있는 경우 정렬 출력에서 ​​실행됩니다."

    따라서 파티션은 먼저 메모리 내에서 생성되고, 커스텀 컴 바이 너가 있으면 메모리 내에서 실행되고 결과는 디스크에 쏟아집니다.

    2 / 커스텀 컴 바이 너와 커스텀 파티션은 드라이버 클래스에 지정 될 때 존재합니다.

    job.setCombinerClass(MyCombiner.class);
    job.setPartitionerClass(MyPartitioner.class);
    

    사용자 지정 결합기가 지정되지 않은 경우 결합기가 실행되지 않습니다. 사용자 지정 파티 셔 너가 지정되어 있지 않으면 기본적으로 실행되는 파티 셔 너는 "HashPartitioner"입니다 (221 페이지 참조).

    3 / 그렇습니다. 결합기의 메커니즘이 감속기와 동일하다는 것을 잊지 마십시오. 감속기는 압축 된 데이터를 소비 할 수 있습니다. 소비자가 압축 된 데이터를 사용하는 경우 입력 파일 형식이 압축되었음을 의미합니다. 이를 위해 드라이버 클래스에서 명령어를 지정할 수 있습니다.

    Sequence File case: job.setInputFormatClass(SequenceFileInputFormat.class);
    Avro File case: job.setInputFormatClass(AvroKeyInputFormat.class); 
    
  2. ==============================

    2.귀하의 질문에 대한 직접적인 답변은 => COMBINER입니다.

    귀하의 질문에 대한 직접적인 답변은 => COMBINER입니다.

    세부 정보 : 컴 바이 너는 맵 단계에서 미니 리듀서로 볼 수 있습니다. 매퍼 결과에 대해 로컬 축소를 수행하여 추가로 배포합니다. 결합기 기능이 실행되면 추가 작업을 위해 감속기로 전달됩니다.

    이므로

    Reducer보다 많은 작업을 할 때 Partitioner가 그림에 나타납니다. 따라서 파티 셔 너는 특정 키를 담당하는 reucer를 결정합니다. 기본적으로 매퍼 결과 (컴 바이 너가 사용 된 경우 컴 바이 너 결과 인 경우)를 가져와 키를 기준으로 담당 리듀서로 보냅니다.

    더 나은 이해를 위해 Hadoop의 Yahoo Developer Tutorial에서 가져온 다음 이미지를 참조 할 수 있습니다. 그림 4.6 : MapReduce 데이터 흐름에 삽입 된 결합기 단계

    튜토리얼은 다음과 같습니다.

  3. ==============================

    3.이것이 전체 MR 작업 흐름입니다. 귀하의 1) 및 2)가 여기에 답변됩니다.

    이것이 전체 MR 작업 흐름입니다. 귀하의 1) 및 2)가 여기에 답변됩니다.

    답변 -3 : 예. 컴 바이 너는 압축 된 데이터를 처리 할 수 ​​있습니다. 컴 바이 너 기능은 맵 단계의 출력에서 ​​실행되며 리듀서로 전달되는 중간 키 수를 줄이기 위해 필터링 또는 집계 단계로 사용됩니다. 대부분의 경우 감속기 클래스는 결합기 클래스로 설정됩니다. 차이점은 이러한 클래스의 출력에 있습니다. 컴 바이 너 클래스의 출력은 리듀서로 전달되는 중간 데이터이며 리듀서의 출력은 디스크의 출력 파일로 전달됩니다. 작업 결합기는 다음과 같이 설정할 수 있습니다.

    job.setCombinerClass(CustomCombiner.class);
    
  4. ==============================

    4.파티션은 Combinor보다 먼저 실행됩니다. a) 매퍼는 데이터를 b) 파티 셔너 (기본값 또는 custom)는 키를 기준으로 요구 사항에 따라 데이터를 파티셔닝합니다. c) 백그라운드 스레드 / 프로세스가 처리 할 키를 정렬합니다. d) 조합기가 존재하는 경우 :         그런 다음 combinor가 오면 정렬 키의 출력에서 ​​실행됩니다. e) 입력 데이터에 대해 한 번 더 정렬을 수행 한 감속기 다음에 감속기 프로세스가 이어집니다.

    파티션은 Combinor보다 먼저 실행됩니다. a) 매퍼는 데이터를 b) 파티 셔너 (기본값 또는 custom)는 키를 기준으로 요구 사항에 따라 데이터를 파티셔닝합니다. c) 백그라운드 스레드 / 프로세스가 처리 할 키를 정렬합니다. d) 조합기가 존재하는 경우 :         그런 다음 combinor가 오면 정렬 키의 출력에서 ​​실행됩니다. e) 입력 데이터에 대해 한 번 더 정렬을 수행 한 감속기 다음에 감속기 프로세스가 이어집니다.

  5. ==============================

    5.전체 흐름을 요약하고 싶습니다.

    전체 흐름을 요약하고 싶습니다.

    내 이해에 차이가 있으면 제안하십시오

  6. from https://stackoverflow.com/questions/32110955/who-will-get-a-chance-to-execute-first-combiner-or-partitioner by cc-by-sa and MIT license