카탈로그 테이블

카탈로그 테이블 (Catalog Tables)

카탈로그 테이블 hbase:meta는 HBase 테이블로 존재하며 시스템의 모든 region 목록을 관리해요. 이 테이블의 구조와 시작 시퀀스, 그리고 region 할당 시 정렬이 어떻게 이루어지는지 살펴볼게요.

출처: 문서

본문

카탈로그 테이블 hbase:meta는 HBase 테이블로 존재하며, HBase shell의 list 명령에서는 필터링되지만 실제로는 다른 테이블과 똑같은 테이블이에요.

hbase:meta

hbase:meta 테이블(이전에는 .META.라고 불렸어요)은 시스템의 모든 region 목록을 유지하며, hbase:meta의 위치는 ZooKeeper에 저장돼요.

hbase:meta 테이블 구조는 다음과 같아요.

Key:

  • ([table],[region start key],[region id]) 형식의 region 키

Values:

  • info:regioninfo (이 region에 대한 직렬화된 RegionInfo 인스턴스)
  • info:server (이 region을 담고 있는 RegionServer의 server:port)
  • info:serverstartcode (이 region을 담고 있는 RegionServer 프로세스의 시작 시각)

테이블이 분할(splitting) 과정에 있을 때, info:splitA와 info:splitB라는 두 개의 다른 컬럼이 생성돼요. 이 컬럼들은 두 딸 region(daughter region)을 나타내며, 그 값들 역시 직렬화된 HRegionInfo 인스턴스예요. region이 분할된 후에는 결국 이 행이 삭제돼요.

HRegionInfo에 대한 참고 사항:

빈 키는 테이블 시작과 테이블 끝을 나타내는 데 사용돼요. 빈 시작 키를 가진 region은 테이블의 첫 번째 region이에요. region이 빈 시작 키와 빈 끝 키를 모두 가진다면, 그 region은 테이블의 유일한 region이에요.

카탈로그 메타데이터의 프로그래밍 방식 처리가 필요한 (가급적 없었으면 하는) 상황에서는 RegionInfo.parseFrom 유틸리티를 참고해 주세요.

시작 시퀀스 (Startup Sequencing)

먼저 ZooKeeper에서 hbase:meta의 위치를 찾아요. 그다음 hbase:meta가 server와 startcode 값으로 갱신돼요.

region-RegionServer 할당에 대한 정보는 Region-RegionServer Assignment를 참고해 주세요.

더 알아보기 (Learn more)

Region, RegionServer, Master 등 HBase 메타데이터와 region 관리에 관한 아키텍처 문서를 이어서 보시길 권해요.