HBase 셸에는 테이블 용량을 알려 주는 명령이 없다. HDFS 경로를 직접 본다.
hdfs dfs -du -h /hbase/data/default/my_table
hdfs dfs -du -s -h /hbase/data/default/my_table
hdfs dfs -du -h /hbase/data
네임스페이스를 쓰면 경로가 /hbase/data/<namespace>/<table> 이 된다. 이 수치는 복제본을 포함하지 않은 논리 크기다. 실제 점유 용량은 복제 계수를 곱해야 한다.
hdfs dfs -du -s -h -v /hbase/data/default/my_table
-v 를 주면 SIZE, DISK_SPACE_CONSUMED 열을 함께 보여 준다. 두 번째 열이 복제본까지 포함한 값이다.
archive 와 oldWALs 도 같은 방식으로 본다. 테이블 용량이 예상보다 크면 여기부터 확인한다.
hdfs dfs -du -s -h /hbase/archive /hbase/oldWALs
list_regions 'my_table'
Master 웹 UI 의 테이블 상세 화면에서도 리전별 StoreFile 크기와 요청 수를 볼 수 있다. Cloudera Manager 를 쓰면 HBase 서비스의 차트에서 테이블별 StoreFile 크기를 시계열로 본다.
| 대상 | 노출 형태 | 비고 |
|---|---|---|
| HBase | JMX | jmx_exporter 를 javaagent 로 붙여 변환 |
| Kudu | /metrics?format=prometheus |
Master 8051, TServer 8050 에서 직접 노출 |
| Impala | /metrics?json (JSON) |
Prometheus 네이티브 포맷이 아니어서 별도 exporter 필요 |
Kudu 는 Prometheus 포맷을 직접 내놓으므로 스크랩 대상으로 바로 등록할 수 있다.
curl -s "http://kudu-master:8051/metrics?format=prometheus" | head
curl -s "http://kudu-tserver:8050/metrics?format=prometheus" | grep on_disk_size | head
HBase 와 Impala 는 그대로 쓸 수 없다. HBase 는 jmx_exporter 를 JVM 에 붙여 JMX 를 Prometheus 포맷으로 바꾸고, Impala 는 JSON 메트릭을 읽어 변환하는 exporter 를 앞에 둔다. 범용 도구로는 json_exporter 가 있고, 필요한 지표만 경로로 지정해 뽑는다.
metrics:
- name: impala_num_queries
path: "{.metrics.impala-server.num-queries}"
scrape_configs:
- job_name: 'impala-json'
static_configs:
- targets: ['exporter-host:7979']
hdfs dfs -du 는 major compaction 직후와 직전의 값이 크게 다르다. 삭제분과 TTL 만료분이 compaction 전까지 남아 있기 때문이다. 용량 추이를 볼 때는 compaction 주기를 함께 고려한다.