IT 삽질기

HBase Compaction 본문

BigData/HBase

HBase Compaction

화이팅빌런 2021. 6. 23. 23:09

HBase Compaction에 대해서 알아보도록 하자.

Compaction에 대해 알기 전에 HBase에서 데이터를 저장하기 위한 과정에 대해 먼저 알아야 하는데,

아래의 글을 참고하도록 하자.

2021.05.15 - [BigData/HBase] - HBase 데이터 쓰기/읽기 과정

위의 글에서 HBase에 데이터를 쓸 때, Memstore에 저장되어 있는 데이터를 HFile 형식으로 저장한다고 설명되어 있는데, Compaction은 이렇게 생성된 HFile의 수를 줄여 읽기 성능을 향상시키는데 목적을 둔다.

Compaction은 Major, Minor Compaction으로 구분되는데 하나씩 알아보도록 하자.

 

major Compaction

HBase에서는 데이터를 삭제하더라도 실제로 바로 삭제가 되지 않고, 삭제 표시만 추가 되게 되는데 이런 데이터가 실제로 삭제가 진행되고 특정 region의 Column Family의 모든 HFile를 하나로 병합하는 과정을 major compaction이라고 한다. major compaction은 기본적으로 7일에 한번 진행되도록 설정되어 있는데, 데이터가 많으면 서버에 많은 부하가 생길 수 있어 자주 수행하는 것은 좋지 않다.

minor Compaction

minor compaction은 작은 HFile 파일들을 하나로 합치는 과정이다.

HBase에서 데이터를 쓰는 경우 Memstore 관련 설정에 따라 하나의 flush가 발생하게 되면 HFile이 하나 생기게 되는데 이렇게 생성되는 HFile들의 갯수가 많아지게 되면 자연스럽게 데이터를 탐색하는데 걸리는 시간이 증가하고 이는 성능의 저하로 이어진다. minor compaction은 이렇게 생긴 많은 HFile들을 조금 더 큰 HFile로 합치는 과정을 진행하는데 이를 통해 데이터 탐색 속도를 늘릴 수 있다.

minor compaction은 hbase.hstore.compaction.min / hbase.hstore.compaction.max 값으로 주기를 설정할 수 있다.

hbase.hstore.compaction.min : minor compaction을 수행하기 위한 최소 StoreFile 수 기본값 3

hbase.hstore.compaction.max : minor compaction이 일어날 때, 처리하는 최대 StoreFile 갯수 기본값 10

 

참고자료

https://nabillera.tistory.com/entry/HBase-%EA%B3%B5%EB%B6%80-Flush-Compaction-Recovery-Key

'BigData > HBase' 카테고리의 다른 글

HBase Thrift Server SocketTimeOut  (0) 2021.07.01
HBase 데이터 쓰기/읽기 과정  (0) 2021.05.15
HBase tools를 이용한 HBase balancing  (0) 2021.03.10
HBase 튜닝하기  (0) 2021.03.07
HBase 테이블별 용량 확인  (0) 2019.04.27
Comments