개요

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

+ Recent posts