복붙노트

[HADOOP] Hadoop 2의 Hive 매퍼 수를 늘립니다.

HADOOP

Hadoop 2의 Hive 매퍼 수를 늘립니다.

Hive에서 HBase 테이블을 만들었고 간단한 집계를 수행하려고합니다. 이것은 내 하이브 쿼리입니다.

from my_hbase_table 
select col1, count(1) 
group by col1;

맵 감속 작업은 단지 2 개의 맵퍼를 생성하며이를 증가시키고 싶습니다. 플레인 맵 작업을 줄이면 매퍼의 수를 늘리기 위해 원사 및 매퍼 메모리를 구성 할 것입니다. 하이브에서 다음을 시도했지만 작동하지 않았습니다.

set yarn.nodemanager.resource.cpu-vcores=16;
set yarn.nodemanager.resource.memory-mb=32768;
set mapreduce.map.cpu.vcores=1;
set mapreduce.map.memory.mb=2048;

노트:

해결법

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

    1.파일을 더 작게 분할하면 기본값은 효율적인 솔루션이 아닙니다. Spiting은 기본적으로 대형 데이터 세트를 처리하는 동안 사용됩니다. 기본값 자체가 작은 크기이므로 다시 분할 할 필요가 없습니다.

    파일을 더 작게 분할하면 기본값은 효율적인 솔루션이 아닙니다. Spiting은 기본적으로 대형 데이터 세트를 처리하는 동안 사용됩니다. 기본값 자체가 작은 크기이므로 다시 분할 할 필요가 없습니다.

    쿼리하기 전에 다음 구성을 사용하는 것이 좋습니다. 입력 데이터를 기반으로 적용 할 수 있습니다.

    set hive.merge.mapfiles=false;
    
    set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
    
    set mapred.map.tasks = XX;
    

    감속기의 수를 지정하려면 아래 구성을 사용할 수도 있습니다

    set mapred.reduce.tasks = XX;
    

    Hadoop 2 (YARN)에서 mapred.map.tasks 및 mapred.reduce.tasks는 더 이상 사용되지 않으며 다른 변수로 대체됩니다.

    mapred.map.tasks     -->    mapreduce.job.maps
    mapred.reduce.tasks  -->    mapreduce.job.reduces
    

    아래의 유용한 링크를 참조하십시오.

    http://answers.mapr.com/questions/5336/limit-mappers-and-reducers-for-specific-job.html

    하이브 맵퍼 작업을 늘리지 못합니까?

    매퍼를 할당하는 방법

    맵퍼의 수는 MapReduce 작업에 사용 된 InputFormat에 의해 결정되는 스플릿 수에 의해 결정됩니다. 일반적인 InputFormat에서는 파일 수와 파일 크기에 직접 비례합니다.

    HDFS 블록 구성이 64MB (기본 크기)로 구성되어 있고 100MB 크기의 파일이 있다고 가정합니다 2 블록을 차지한 다음 2 매퍼가 블록을 기반으로 할당됩니다.

    하지만 30MB 크기 (각 파일)의 파일이 2 개 있고 각 파일이 하나의 블록을 차지하고 매퍼가 assigend를 얻는다고 가정합니다 그걸 바탕으로

    많은 수의 작은 파일로 작업 할 때 Hive는 기본적으로 CombineHiveInputFormat을 사용합니다. MapReduce의 관점에서 궁극적으로 가상 분할을 생성하는 CombineFileInputFormat을 사용하는 것으로 변환됩니다 가능하면 공통 노드, 랙별로 그룹화 된 여러 파일에 적용됩니다. 결합 된 분할의 크기는

    mapred.max.split.size
    or 
    mapreduce.input.fileinputformat.split.maxsize ( in yarn/MR2);
    

    따라서 스플릿 (스플릿 매퍼)을 줄이려면이 매개 변수를 더 높게 설정해야합니다.

    이 링크는 더 많은 정보를 이해하는 데 유용 할 수 있습니다.

    각 Hadoop 매퍼가 읽을 기본 크기는 얼마입니까?

    또한 매퍼와 감속기의 수는 항상 클러스터의 매퍼 및 감속기 슬롯에 따라 다릅니다.

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

    2.입력 분할 크기를 기본값에서 줄입니다. 매퍼가 증가 할 것입니다.

    입력 분할 크기를 기본값에서 줄입니다. 매퍼가 증가 할 것입니다.

    SET mapreduce.input.fileinputformat.split.maxsize;

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

    3.HBase 테이블을 분할하면 더 많은 매퍼를 자동으로 사용하도록 작업해야합니다.

    HBase 테이블을 분할하면 더 많은 매퍼를 자동으로 사용하도록 작업해야합니다.

    2 개의 스플릿이 있으므로 각 스플릿은 하나의 매퍼에서 읽습니다. 증가시키지 마라. 분할의.

  4. from https://stackoverflow.com/questions/30222032/increase-number-of-hive-mappers-in-hadoop-2 by cc-by-sa and MIT license