HBase 스냅샷의 조회·삭제 명령과 컴팩션의 개념·명령을 정리한다. 스냅샷은 HFile 을 참조로 붙잡고 있어 디스크 사용량과 직결되고, 컴팩션은 읽기 성능과 삭제 데이터의 실제 제거에 관여한다.
list_snapshots
list_snapshots 'prefix.*'
list_snapshots 'table_name.*'
describe_snapshot 'snapshot_name'
hbase snapshot list
hbase snapshot info -snapshot <snapshot_name>
list_snapshots 는 이름·대상 테이블·생성 시각만 보여 주고 디스크 사용량은 표시하지 않는다. 사용량은 hbase snapshot info 로 확인한다.
delete_snapshot 'snapshot_name'
delete_all_snapshot 'snapshot_name_prefix.*'
hbase snapshot delete -n <snapshot_name>
자바 API 로도 같은 일을 할 수 있다.
Admin admin = connection.getAdmin();
admin.deleteSnapshot("snapshot_name");
admin.deleteSnapshots(Pattern.compile("snapshot_prefix.*"));
HBase 는 쓰기 데이터를 불변 파일인 HFile 로 계속 flush 하므로 파일 수가 늘면 읽기 성능이 떨어지고 삭제·수정으로 생긴 tombstone 도 쌓인다. 컴팩션은 이 HFile 들을 병합해 정리하는 작업이다.
| 구분 | Minor Compaction | Major Compaction |
|---|---|---|
| 대상 | 일부 작은 HFile | 해당 Region · ColumnFamily 의 모든 HFile |
| 목적 | 파일 개수 줄이기 | 삭제 마커·만료 데이터·중복 버전 완전 제거 |
| 부담 | 상대적으로 가벼움 | I/O · CPU 부담 큼 |
| 실행 | 자동, 빈도 높음 | 주기적 자동 또는 수동 트리거 |
compact 'table_name'
compact 'table_name', 'column_family'
major_compact 'table_name'
major_compact 'region_name'
compact_switch true|false
compaction_state 'table_name'
주요 설정은 hbase-site.xml 에 둔다. hbase.hstore.compaction.min 은 minor compaction 을 트리거하는 최소 파일 수(기본 3), hbase.hstore.compaction.max 는 한 번에 처리할 최대 파일 수(기본 10)다. major compaction 자동 실행 주기는 기본 7일이며 0 으로 두면 비활성화된다.
list_snapshots 나 describe_snapshot 으로 대상을 먼저 확인한다.hbase.master.cleaner.interval 주기에 따라 비동기로 이뤄지므로 삭제 직후 디스크 공간이 바로 확보되지 않는다.