파이문

HBase Region 할당 순서 본문

NoSQL/HBase

HBase Region 할당 순서

민Z 2020. 10. 23. 00:13

Region-RegionServer 할당 방식

Region 이 어떻게 RegionServer 에 할당 되는걸까?

StartUp (시작 시)

  1. Master 는 AssignmentManager 를 호출 한다.
  2. AssignmentManagerhbase:meta 의 (이미 있는) region 정보를 살펴 본다.
  3. 만약 region 이 여전히 유효하다면 (예를 들면 RegionServer 가 살아있는 상태인 경우) 할당을 한다.
  4. 만약 (할당이) 유효하지 않다면 LoadBalancerFactory 가 region 을 할당 시킨다. 로드 밸런서가 Region 을 RegionServer 에 할 >당 시킨다.
  5. hbase:meta 에 RegionServer 의 정보를 업데이트 한다. (필요하다면 RegionServer의 start code 도 저장한다.)

FailOver (실패 시)

  1. RegionServer 가 다운되었기 때문에 해당 RegionServer 에 있는 region 은 즉시 이용 못하게(unavailable) 된다.
  2. Master 는 RegionServer 의 fail 상태를 감지할 것이다.
  3. region 할당이 유효하지 않아, 재 할당 되는데 시작 순서(startup)와 똑같이 진행된다.
  4. 실행중인 쿼리는 재 시작되고 손실 되진 않는다.
  5. 다음 시간 내에 새로운 RegionServer 에서 운영 가능해 진다.
ZooKeeper session timeout + split time + assignment/replay time

Region Load Balancing

region 은 주기적으로 LoadBanacer 에 의해 옮겨진다.

Region State Transition

HBase 는 각 region 의 상태를 hbase:meta 에 유지한다.
hbase:meta 에 있는 region 상태는 주키퍼에서 유지 한다.(??)

 

  • OFFLINE region 이 오프라인 상태이다. (open 되지 않음)

  • OPENING region 이 open 되는 중이다.

  • OPEN region 이 open 되고 RegionServer 가 master 에게 알린다.

  • FAILED_OPEN RegionServer 가 region 을 open 하는데 실패했다.

  • CLOSING region 이 close 되는 중이다.

  • CLOSED RegionServer 가 region 을 close 시키고 master 에게 알린다.

  • FAILED_CLOSE RegionServer 가 region 을 close 시키는데 실패했다.

  • SPLITTING RegionServer가 master 에게 region 이 분리(split) 되는 중인걸 알린다.

  • SPLIT RegionServer 가 master 에게 region split 이 완료되었다고 알린다.

  • SPLITTING_NEW region 이 split 되어 생성되는 중이다.

  • MERGING RegionServer 가 master 에게 region 이 다른 region 와 merge 되었다고 알린다.

  • MERGED RegionServer가 master 에게 region 이 merge 되었음을 알린다.

  • MERGING_NEW region 이 두개의 region 에서 합쳐지는 중이다.

참고

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

HBase META 테이블  (0) 2020.10.23
HBase 기본 명령어  (0) 2020.09.25
Comments