2014-12-22 4 views
0

HBase에서 메타 데이터는 카탈로그 테이블, 즉 META 테이블에 저장됩니다. 이 테이블은 시작이나 영역 분할 또는 영역의로드 균형 조정 중 HMaster에 의해 업데이트됩니다. 클라이언트는 일부 ROW를 가져오고 META 테이블에서 지역 정보를 가져 오려고합니다.Hbase - 쓰기 작업

제 질문은, 특정 테이블에 새 행을 삽입 할 때이 메타 테이블이 어떻게 업데이트 되는가입니다. 예를 들어 put 명령을 실행하여 기존 테이블에 새 행을 삽입하고,이 행이 Meta 테이블에 반영되어 다른 클라이언트가이 행을 반입하려는 경우 영역 정보를 가져올 수 있습니다.

답변

0

새 영역을 추가하지 않으면 메타 업데이트가 필요하지 않습니다. 영역은 행 세트를 포함

- (> 기계 영역 이름)

META는 시스템 영역의 단지 맵을 유지한다. [0, 3

  • 지역 2 : [4, 6]
  • 지역 3 : 7, 9]
  • 는 3 개 영역

    • 1 지역과 테이블이 있다고하자

      0에서 3 사이의 숫자로 시작하는 키를 삽입하면 데이터가 지역 1에 삽입됩니다. 4와 6 사이의 숫자로 시작하는 키를 삽입하면 데이터가 지역 2에 삽입됩니다. 7과 9 사이의 숫자로 시작하는 키를 삽입하면 데이터가 지역 3에 삽입됩니다.

      특정 키 (넣기 또는 가져 오기)를 요청할 때. META가 상담을 받고 클라이언트가 어떤 지역에 열쇠 X가 있는지 묻습니다. 그리고 해당 범위를 처리 할 책임이있는 지역이 반환되고 거기에 작업이 전송됩니다.

      이렇게하면 삽입 할 때마다 META를 업데이트 할 필요가 없습니다. 핵심 범위를 기반으로 한 모든 것입니다. (단일 영역이있는 경우 해당 영역은 커질 때까지 모든 키를 처리해야하며 두 영역으로 분할됩니다.) 그러면 왼쪽 영역에 원래 영역에있는 가운데 키보다 낮은 키가 포함되고 오른쪽 영역에는 원래 영역에있는 가운데 키보다 높은 키가 포함됩니다)