[HADOOP] 하이브의 분할 된 테이블에 대해 얼마나 많은 매퍼와 축소 기가 만들어 지는지
HADOOP하이브의 분할 된 테이블에 대해 얼마나 많은 매퍼와 축소 기가 만들어 지는지
하이브에서 특정 작업을 수행 할 때 얼마나 많은 매퍼와 축소 효과가 생성되는지 항상 혼란 스럽습니다. 예 : 블록 크기가 128MB이고 파일이 365 개있는 경우 각 파일은 1 년 (파일 크기 = 1MB)의 날짜로 매핑됩니다. 날짜 열을 기반으로하는 파티션이 있습니다. 이 경우 데이터를로드하는 동안 얼마나 많은 매퍼와 축소 기가 실행됩니까?
해결법
-
==============================
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를 줄입니다.
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
'HADOOP' 카테고리의 다른 글
[HADOOP] Hive에서 레코드를 삭제하고 업데이트하는 방법 (0) | 2019.05.29 |
---|---|
[HADOOP] HiveQL 쿼리의 결과를 CSV로 어떻게 출력합니까? (0) | 2019.05.29 |
[HADOOP] 병렬로 IN 절 매개 변수를 사용하여 하이브 쿼리를 실행합니다. (0) | 2019.05.29 |
[HADOOP] hadoop에서 단일 레코드로 파일 읽기 (0) | 2019.05.29 |
[HADOOP] Java webapp에 내장 된 클라이언트에 대해 hadoop 시스템 사용자 설정 (0) | 2019.05.29 |