GOOD4ME
[TEZ] Apache TEZ 프레임워크 본문
MapReduce
분산 데이터 처리 프레임워크인 MapReduce는
임의의 자바 프로그램을 실행시킬 수 있어
비구조화된 데이터를 가공하는데 적합하다
Map은 데이터를 변형하며
Reduce는 Map의 결과 데이터를 집계한다
데이터의 Reduce 작업이 끝나면
중간 결과를 HDFS에 저장한 뒤,
다시 M-R 작업이 이루어지기 때문에,
Disk I/O가 발생하여 작업 속도가 저하된다
TEZ
TEZ는 MapReduce처럼
분산 데이터 처리 프레임워크이다
미리 실행계획을 계산하여
DAG를 통해 Disk에 저장하는 과정없이
Map 단계의 데이터를 메모리에 저장 후, Reduce에 전달함으로써
작업 속도가 MapReduce에 비해 빠르다.
간단한 작업에 대해서는 처리 속도 향상률이 낮은건 비밀...😂
Hive는 기본적으로 MapReduce를 엔진으로 사용하지만,
대용량 데이터를 처리하는 경우엔
MapReduce보단 TEZ를 사용하는 것이 효율적이다.
Hive에서 TEZ를 사용하기 위해서는
hive-site.xml에서 아래의 설정 부분을 찾아 수정 또는 추가해야한다.
~
<name>hive.execution.engine</name>
<value>tez</value>
~
또는 hive에 접속 후 하단처럼 환경설정을 하여 엔진 변경이 가능하다.
> SET hive.execution.engine = tez;
TEZ 사용 시, 주의사항
TEZ는 Map 작업이 종료되면
MapReduce와 달리 메모리에 데이터를 저장하기 때문에
충분한 크기의 메모리가 필요하다
또한 TEZ 설정 시,
여러가지 메모리 크기를 설정하는 부분이 있는데,
이를 자신의 메모리에 맞게 수정해야
메모리 오류를 피할 수 있다.
~
<name>tez.am.resource.memory.mb</name>
<value>2048</value>
~
~
<name>tez.am.java.opts</name>
<value>-Xmx1600m</value>
~
~
<name>hive.tez.container.size</name>
<value>2048</value>
~
~
<name>hive.tez.java.opts</name>
<value>-Xmx1600m</value>
~
~
<name>tez.runtime.io.sort.mb</name>
<value>800</value>
~
~
<name>hive.auto.convert.join.noconditionaltask.size</name>
<value>600</value>
~
또는 hive에 접속 후 하단처럼 환경설정을 하여 메모리 설정이 가능하다.
// Application Master 메모리
> SET tez.am.resource.memory.mb=2048;
// Application Master가 사용할 힙메모리 사이즈
// tez.am.resource.memory.mb의 80%
> SET tez.am.java.opts=-Xmx1600m;
// tez 작업을 진행하는 컨테이너의 메모리 크기
> SET hive.tez.container.size=2048;
// 컨테이너에서 사용할 수 있는 힙의 메모리 크기
// hive.tez.container.size의 80%
> SET hive.tez.java.opts=-Xmx1600m;
// 출력결과를 정렬해야 할 때 사용하는 메모리
// hive.tez.container.size의 40%
> SET tez.runtime.io.sort.mb=800;
// 맵조인에 사용하는 메모리
// hive.tez.container.size의 33%
> SET hive.auto.convert.join.noconditionaltask.size=600;
'개발.오류.정리 > Hive' 카테고리의 다른 글
TEZ 엔진 기반 파티셔닝 데이터 Insert 오류 (0) | 2023.03.07 |
---|---|
[Hive] HDFS parquet 연동 오류 / org.apache.hadoop.hive.serde2.io.DateWritableV2 (0) | 2023.01.09 |
[TEZ] org/apache/tez/dag/api/SessionNotRunning (0) | 2022.11.28 |
Failing because I am unlikely to write too (0) | 2022.11.25 |
Hive Server run Error (0) | 2022.07.26 |