복붙노트

[HADOOP] 하이브의 분할 된 테이블에 대해 얼마나 많은 매퍼와 축소 기가 만들어 지는지

HADOOP

하이브의 분할 된 테이블에 대해 얼마나 많은 매퍼와 축소 기가 만들어 지는지

하이브에서 특정 작업을 수행 할 때 얼마나 많은 매퍼와 축소 효과가 생성되는지 항상 혼란 스럽습니다. 예 : 블록 크기가 128MB이고 파일이 365 개있는 경우 각 파일은 1 년 (파일 크기 = 1MB)의 날짜로 매핑됩니다. 날짜 열을 기반으로하는 파티션이 있습니다. 이 경우 데이터를로드하는 동안 얼마나 많은 매퍼와 축소 기가 실행됩니까?

해결법

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

    1.매퍼 :

    매퍼 :

    매퍼의 수는 노드, 입력 형식, 실행 엔진 및 구성 매개 변수간에 데이터가 분산되는 방식과 같은 다양한 요소에 따라 다릅니다. 여기에 또한보십시오 : https://cwiki.apache.org/confluence/display/TEZ/How+initial+task+parallelism+works

    MR은 CombineInputFormat을 사용하고, Tez는 그룹화 된 분할을 사용합니다.

    TEZ :

    set tez.grouping.min-size=16777216; -- 16 MB min split
    set tez.grouping.max-size=1073741824; -- 1 GB max split
    

    MapReduce :

    set mapreduce.input.fileinputformat.split.minsize=16777216; -- 16 MB
    set mapreduce.input.fileinputformat.split.minsize=1073741824; -- 1 GB
    

    또한 매퍼는 데이터가있는 데이터 노드에서 실행되므로 매퍼 수를 수동으로 제어하는 ​​것이 쉬운 작업이 아니며 항상 입력을 결합 할 수있는 것은 아닙니다.

    리 듀서 : 감속기의 수를 제어하는 ​​것이 훨씬 쉽습니다. 에 따라 결정된 감속기의 수

    mapreduce.job.reduces - 작업 당 축소 작업의 기본 수입니다. 일반적으로 사용 가능한 호스트 수에 가장 가까운 소수로 설정됩니다. mapred.job.tracker가 "local"인 경우 무시됩니다. Hadoop은 기본적으로이 값을 1로 설정하고 Hive는 기본값으로 -1을 사용합니다. 이 속성을 -1로 설정하면 Hive가 자동으로 축소 자 수를 결정합니다.

    hive.exec.reducers.bytes.per.reducer - 하이브 0.14.0 및 이전 버전의 기본값은 1GB입니다.

    또한 hive.exec.reducers.max - 사용할 감속기의 최대 수입니다. mapreduce.job.reduces가 음수이면 Hive는 자동으로 감속기의 수를 결정할 때 이것을 최대 감속기의 수로 사용합니다.

    따라서 감속기의 병렬 처리를 높이려면 hive.exec.reducers.max를 늘리고 hive.exec.reducers.bytes.per.reducer를 줄입니다.

  2. from https://stackoverflow.com/questions/42841661/how-many-mappers-and-reduces-will-get-created-for-a-partitoned-table-in-hive by cc-by-sa and MIT license