이번주부터 개인적인 공부로 HBase 소스를 분석을 시작합니다. 짧은 영어라 어렵지만 BigTable 논문도 함께 병행해서 볼 생각입니다. 일단 먼저 HBase를 보기에 앞서 궁금했던 사항들을 정리를 하고 시작합니다. 물론 이미 시작했지만 그 때 시작전에 에버노트에 정리했던 내용을 블로그에 정리죠.
틀린 부분 말씀해주시면 감사하겠습니다. :-)
- 어떻게 데이터를 읽고 쓰는가?
- 어떻게 RowKey에 해당하는 데이터를 조회, 변경(DEL, INC, APPEND 포함)하는가?
- 장애상황에는 어떻게 대응하는가?
- 데이터를 어떻게 캐쉬하며 read performance를 개선하는가?
- 데이터를 어떤 구조로 저장하는가?
- 데이터는 어떻게 분산하는가?
- 컴팩션 종류, 동작 그리고 왜 하는가?
처음에 이런 궁금증이 들었던거고 일부 소스코드를 보면서 더 많은 궁금증이 연쇄적으로 발생한다. 일단 그 부분은 하나씩 차차 하면서 풀어가려고 한다. 물론 지금도 궁금증을 해결하지 못한 부분이 많다. (기껏해야 몇 줄 본 코드라.)
BigTable 논문을 보면 용어가 달라서 헷갈리는데 이것부터 정리한다.
BigTable <-> HBase
- Table <-> Table
- Tablet <-> Region
- TabletServer <-> RegionServer
- ? <-> Store
- MemTable <-> MemStore
- SSTable <-> StoreFile (HFile)
- Chubby <-> ZooKeeper
- GFS <-> HDFS
관계
- 하나의 Table은 0개 또는 하나 이상의 Region으로 구성되며
- 하나의 Region은 CF 당 한개의 Store를 가지며
- 하나의 Store에는 하나의 MemStore와 0개 또는 하나 이상의 StoreFile을 가진다.
소스코드를 보니 아주 멘붕인데, 오히려 Put 명령이 오히려 쉽고 Scan 명령이 오히려 코드 보기 어렵습니다. 간단하게 받은 느낌을 정리하면 …
다음 포스트에 기록하겠습니다. :-)
Tagged: bigtable, Hadoop, hbase