HBase
- HDFS 위에 구축되어 있음
- HDFS에 저장된 데이터셋을 HBase를 활용해 외부에 제공할 수 있음
- HBase는 HDFS 위에 구축한 확장 가능한 비관계형(NoSQL) DB
- 따로 쿼리 언어를 갖고 있지 않음. 대신에 이 키의 값이 무엇인지, 값을 키에 저장하기 등에 신속히 답을 제공하는 API를 갖고 있음
- 구글의 BigTable의 이론을 기반으로 개발
No Query
- SQL 같은 쿼리 언어가 없음
- API만 있지만, 그걸 활용해서 CRUD를 할 수 있으며, Transaction을 제공함!
- DB에 row를 추가하거나, row를 읽거나, 업데이트, 삭제할 수 있는데, 이걸 엄청 빠르게 처리할 수 있음!
HBase Architecture
[사진]
- 여러 개의 RegionServer로 나뉘어 있음
- 여기서 Region이란, 실제 지리적 지역을 의미하는 것이 아니라, Key의 범위를 의미함
- 전통적인 DB에서의 Shard나 범위 Partition을 의미함
- data의 양이 늘어나면, data를 파티셔닝해서 거기에 다시 적응함!
- WAL, Commit Log, Async로 데이터 합치기 등의 다양한 기술을 동원한 복잡한 메커니즘임.
- 그러나 우리는 이건 신경 쓰지 않아도 됨 (HBase가 알아서함)
HBase는 개별 Row에 있는 조그만 기록들을 더 큰 파일로 뭉쳐서 HDFS가 더 잘 관리할 수 있도록 한다.
또한 웹 애플리케이션이 웹 서버와 소통할 때, HMaster와 직접 통신하지 않고, RegionServer와 통신한다. 그렇지만 HMaster는 데이터의 스키마를 기록하는 역할을 한다. 즉, 데이터가 어디에 실제로 저장되고, 어떻게 파티션 되어 있는지 등등은 HMaster가 파악하고 있다는 것.
HMaster로는 쿼리가 빈번히 일어나지 않다보니 병목도 없다.
- Zookeeper
- 만약 어떤 마스터 노드가 다운되면, Zookeeper가 다음 마스터 노드를 결정하고, 모두에게 그걸 전달하는 역할을 한다.
HBase Data Model