HBase와 Zookeeper 상호작용 관계
· Version : HBASE, Zookeeper
Hadoop 에코 시스템으로 HBase와 Zookeeper 시스템이 있다. HBase는 NoSQL의 분산 데이터베이스 시스템이며, Zookeeper는 분산 코디네이터 시스템으로 서버간의 상호 조정이 필요한 다양한 서비스를 제공한다.
HBase는 마스터-슬레이브 구조를 가지고 있으며 마스터 역할을 하는 서버를 HMaster, 슬레이브 역할을 하는 서버를 HRegionServer라고 한다. 각 서버의 특징은 아래와 같이 정리할 수 있다.
· HMaster는 HBase에 대한 설정파일들과 HRegionServer에 대한 정보만을 가지고 있는 서버이다.
· HRegionServer는 HRegion이라 불리는 블록을 가지고 있으며, 데이터 로우에 대한 정보가 저장되어 있다.
· HRegion은 저장할 수 있는 데이터 사이즈의 한계를 가지고 있으며, 한계치에 도달할 경우 HRegion은 두개의 리전으로 분리된다. 이때 변경 사항은 Zookeeper에게 보고된다.
· 클라이언트가 HRegionServer를 통해서 데이터를 가져오거나 추가할때 HBase는 두개의 카탈로그 테이블(-ROOT-, .META.)를 제공한다.
· -ROOT- 테이블은 모든 .META. 리전에 대한 정보를 가지고 있으며 .META. 테이블은 모든 사용자 테이블 리전에 대한 정보를 가지고 있다. -ROOT- 테이블이 존재하는 리전의 정보는 Zookeeper에 저장된다. 매칭되는 .META. 리전은 -ROOT- 테이블로 부터 조회되며, 사용자의 리전은 .META. 테이블로부터 클라이언트에게 제공된다.
· 클라이언트는 -ROOT-, .META. 사용자 리전을 캐싱하며 캐시된 데이터에 연산을 수행한다. HRegion에 문제가 발생하면 .META.의 한단계 위로 연산을 실행하게 되며 이 데이터에도 문제가 있을 경우 -ROOT- 테이블에 연산을 요청하게 된다.
기본적으로 마스터-슬레이브 유형의 HBase 아키텍처에는 3 가지 유형의 서버가 있다. HBase HMaster, HRegionServer 및 ZooKeeper이다. 리전 서버는 읽기 및 쓰기 목적으로 데이터를 제공한다. 즉, 클라이언트는 데이터에 액세스하면서 HBase 리전 서버와 직접 통신 할 수 있다. 또한 HBase 마스터 프로세스는 영역 할당 및 DDL (테이블 만들기, 삭제) 작업을 처리한다. 마지막으로 HDFS의 일부인 Zookeeper는 라이브 클러스터 상태를 유지한다. 또한 리전 서버가 관리하는 데이터는 Hadoop DataNode에 추가로 저장된다. 또한 모든 HBase 데이터는 HDFS 파일에 저장된다. 그런 다음 리전서버가 제공하는 데이터의 경우, 지역 서버는 HDFS DataNode와 함께 배치되어 데이터 지역성을 사용할 수 있다. 여기서 데이터 지역성은 데이터를 필요한 곳에 가까이 두는 것을 의미한다.
HBase와 Zookeeper의 상호작용은 아래 순서로 설명할 수 있다.
1. Zookeeper는 외부 클라이언트의 연결을 제어하며, HRegionServer에 대한 정보 tracking 및 -ROOT- 리전에 대한 정보를 관리한다.
2. 클라이언트는 제일 먼저 Zookeeper cluster/ensemble에 연결되고 리전 서버들의 위치 정보를 요청한다.
3. 클라이언트로부터 특정 테이블에 대한 “쓰기” 요청이 발생하는 경우 HBase는 우선적으로 WAL(Write Ahead Log)에 데이터를 저장한다.
4. Zookeeper는 사용 가능한 HRegionServer를 찾아서 WAL에 저장된 데이터를 memstore라 불리는 저장소에 가져온다. 만약 memstore의 공간이 가득차게 되면 Zookeeper는 HFile라 불리는 파일에 데이터를 flush하며 HDFS에 저장한다.
5. HRegionServer 에 장애가 발생하면 Zookeeper는 HRegion 장애복구 프로세스를 진행하며 Zookeeper Ensemble은 이 프로세스를 HMaster가 아닌곳에서 실행한다.
[참고자료]
https://data-flair.training/blogs/hbase-architecture/
2019-11-20 / Sungwook Kang / http://sungwookkang.com
Hadoop, zookeeper, 하둡, 주키퍼, HBase, 분산 코디네이터, 분산 데이터베이스, 하둡 에코 시스템, Hadoop Echo system
'SW Engineering > Hadoop' 카테고리의 다른 글
Hive 테이블 생성 (0) | 2019.11.27 |
---|---|
Hive Architecture (0) | 2019.11.26 |
NameNode and Secondary NameNode Heap Memory Size 변경 (0) | 2019.11.20 |
Hadoop Name Node (0) | 2019.11.19 |
HDFS 블록 (0) | 2019.11.16 |