개요
Hive ACID를 적용을 해서 간단한 기능테스트는 끝냈고 (https://octocat.tistory.com/124)
성능이 어느정도 되는지 확인해 봤다
Hive의 Compaction이란
- Hive에서 ACID(Atomicity, Consistency, Isolation, Durability) 테이블을 관리하고 변경 내용을 관리하기 위한 프로세스
- Hive ACID 테이블은 델타 파일을 사용하여 변경 내용을 기록하는데 컴팩션은 델타 파일을 효율적으로 관리하고 최적화
- Compaction Minor
- 컴팩션 마이너는 주로 델타 파일 (Delta File)을 관리하고, 작은 규모의 변경 내용을 처리
- 일반적으로 주기적으로 실행되며, 데이터의 변경 내용이 축적될 때 작은 단위로 수행
- 컴팩션 마이너는 삭제 된 행 및 업데이트 된 행과 관련된 작은 델타 파일을 합치고 기본 데이터 파일을 최적화
- 컴팩션 마이너는 작은 규모의 변경 내용을 처리하고, 주기적으로 실행되며, 주로 성능 개선 및 델타 파일 관리를 위해 사용
- 컴팩션 메이저는 보다 복잡하고 시간이 더 오래 걸릴 수 있지만, 데이터 일관성과 성능 관리에 유리
- Compaction Major
- 컴팩션 메이저는 주로 대규모의 변경 내용을 처리하며, 주로 큰 규모의 변경 내용을 처리
- 주로 델타 파일의 크기가 너무 커서 데이터 관리에 문제가 발생할 때 실행
- 컴팩션 메이저는 모든 델타 파일을 기본 데이터 파일로 병합하여 데이터 일관성을 복구하고 공간을 최적화
- 컴팩션 메이저는 대규모 변경 내용을 처리하며, 주로 데이터 일관성을 복구하고 공간 최적화를 위해 실행
Hive 트랜잭션 성능 테스트
- Compaction Minor 테이블 생성
CREATE TABLE acid_test (
id int,
name string
)
PARTITIONED BY ( logday string)
CLUSTERED BY (id) INTO 2 BUCKETS STORED AS ORC
TBLPROPERTIES ("transactional"="true",
"compactor.mapreduce.map.memory.mb"="2048", -- specify compaction map job properties
"compactorthreshold.hive.compactor.delta.num.threshold"="4" -- trigger minor compaction if there are more than 4 delta directories
);
- Update SQL 실행
- 쿼리 : update acid_test2 set id = 'qq' where id = 2;
- 1건 UPDATE 수행시간 8.8초
Trino 트랜잭션 성능 테스트
- Update SQL 실행
- 쿼리 :update acid_test set name = 'qq' where id = 1;
- 1건 UPDATE 수행시간 2.5초
'BIGDATA > HIVE' 카테고리의 다른 글
Hive ACID 적용 방법 (0) | 2023.10.27 |
---|---|
mr 엔진 사용 시 recursive directory 설정 (0) | 2023.08.31 |
hive dymamic partition 에러 (0) | 2023.02.10 |
get_json_object, json_tuple 사용법 및 차이 (0) | 2023.01.27 |
HIVE select insert 에러 발생 (0) | 2022.11.21 |