Hadoop의 HDFS 위에 만들어진 분산 데이터베이스
• HDFS의 데이터에 대한 실시간 임의 읽기 / 쓰기 기능을 제공
• 사용자는 HBase나 HDFS에 직접 데이터를 저장할 수 있고, 데이터를 읽고 접근하는 것은 HBase를 통함
• 선형 확장성을 가지고 있음
• 읽기와 쓰기의 일관성을 제공
• cluster를 통한 데이터의 복제 제공
분산 구성 시 HBase는 Masterd와 Slave로 나뉘어 동작
Master = HMaster
HDFS의 NameNode에서 실행
Region을 region server에 할당 및 region server 관리
Region server에 퍼져있는 region들의 load balancing을 수행
스키마의 변화나 Metadata 연산을 책임
Slave = Region Server
Client와 직접 통신
Region 관리 및 호스팅
Region 자동 분할
Write Ahead Log
Block cache – read cache 로 자주 읽은 데이터를 저장
Memstore – write cache로 Region에 있는 모든 Column Family는 memstore가 있음
HFile – 실제 storage file로 row 들이 정렬된 key value로 쌓여있음. Disk에 존재
Zookeeper
분산형 코디네이션 서비스
HMaster에 속한 모든 region server가 일정 간격으로 heartbeat를 zookeeper에 보냄으로써 서버가 정상동작임을 감지
설정 정보 유지
pseudo와 standalone 모드에서는 hbase 자체가 zookeeper의 기능도 담당
Client는 PUT, DELETE 등의 명령어로 데이터를 추가/수정/삭제
-> 결과는 HFile에 저장
데이터가 업데이트 될 때마다 Region Server는 데이터를 Memstore(Memory)에 저장
Memstore에 Write한 데이터 크기가 ‘hbase.hregion.memstore.flush.size’ 속성에 지정한 Memstore의 크기를 초과하거나, Memstore 크기의 합이 ‘hbase.regionserver.global.memstore.upperLimit/lowerLimit’ 속성에 지정한 값에 도달하면, Memstore에 저장된 데이터들이 디스크(HFile)에 저장(Flush)된다.
이러한 Memstore와 HFile은 Column Family 당 하나씩 존재
메모리에 저장되는 데이터는 휘발성이므로 데이터가 유실될 수 있다.
-> 추가(수정)된 데이터는 memstore에 저장되기 전 WAL에 저장
HBase는 기본적으로 Key와 Value의 쌍으로 이루어진 데이터를 Column 단위로 저장