一、基本架构
- StoreFile:保存实际数据的物理文件,StoreFile 以 HFile 的格式 (KV) 存储在 HDFS 上。每个 Store 会有一个或多个 StoreFile(HFile),数据在每个 StoreFile 中都是有序的
- MemStore:写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile
- WAL:由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入 MemStore 中。所以在系统出现故障的时候,数据可以通过这个日志文件重建
二、写流程原理
HBase 的读操作比写操作慢,且读写流程没有 master 参与
- 老版本:Zookeeper 中存储的是
-root-
表的位置信息,-root-
表存储的meta
表的位置信息(防止meta
表进行切分) - Client 先访问 Zookeeper,获取
hbase:meta
表位于哪个Region Server
- 访问对应的
Region Server
,获取hbase:meta
表数据,根据写请求的namespace:table/rowkey
信息查询出目标数据位于哪个Region Server