[HADOOP] Hadoop 2의 Hive 매퍼 수를 늘립니다.
HADOOPHadoop 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.파일을 더 작게 분할하면 기본값은 효율적인 솔루션이 아닙니다. 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.입력 분할 크기를 기본값에서 줄입니다. 매퍼가 증가 할 것입니다.
입력 분할 크기를 기본값에서 줄입니다. 매퍼가 증가 할 것입니다.
SET mapreduce.input.fileinputformat.split.maxsize;
-
==============================
3.HBase 테이블을 분할하면 더 많은 매퍼를 자동으로 사용하도록 작업해야합니다.
HBase 테이블을 분할하면 더 많은 매퍼를 자동으로 사용하도록 작업해야합니다.
2 개의 스플릿이 있으므로 각 스플릿은 하나의 매퍼에서 읽습니다. 증가시키지 마라. 분할의.
from https://stackoverflow.com/questions/30222032/increase-number-of-hive-mappers-in-hadoop-2 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop과 압축 된 입력 파일에 관한 아주 기본적인 질문 (0) | 2019.07.07 |
---|---|
[HADOOP] 어떻게하면 Python / pyspark로 graphx를 실행할 수 있습니까? (0) | 2019.07.07 |
[HADOOP] 싱크가 실패한 후에 Flume-NG가 강제로 이벤트 백 로그를 처리하도록하려면 어떻게해야합니까? (0) | 2019.07.07 |
[HADOOP] Hadoop - Mapper에서 직접 HBase에 쓰기 (0) | 2019.07.07 |
[HADOOP] Hbase Java 예제를 실행하는 방법? (0) | 2019.07.07 |