HBase 的读写流程
时间: 2023-12-16 10:04:55 浏览: 81
HBase 的读写流程如下:
1. 客户端向 HMaster 发送请求,获取对应表的 HRegionServer 列表。
2. 客户端根据 HRegionServer 列表,向对应的 HRegionServer 发送请求。
3. HRegionServer 根据请求的操作类型,将请求转发给对应的 HRegion。
4. HRegion 读取或写入数据,并将结果返回给 HRegionServer。
5. HRegionServer 将结果返回给客户端。
具体地,对于写入数据,HBase 采用了 Write-Ahead-Log(WAL)和 MemStore 的机制:
1. 客户端向 HMaster 发送写入请求。
2. HMaster 获取对应表的 HRegionServer 列表,并向每个 HRegionServer 发送写入请求。
3. HRegionServer 接收到写入请求后,将数据写入 WAL。
4. 同时,HRegionServer 将数据写入内存中的 MemStore。
5. 当 MemStore 达到一定大小时,将 MemStore 中的数据写入 HDFS 中的 StoreFile。
6. HRegionServer 返回写入成功的结果。
对于读取数据,HBase 采用基于 LSM-Tree 的机制:
1. 客户端向 HMaster 发送读取请求。
2. HMaster 获取对应表的 HRegionServer 列表,并向每个 HRegionServer 发送读取请求。
3. HRegionServer 接收到读取请求后,根据请求的 RowKey,查找 MemStore 和 StoreFile 中的数据。
4. 如果在 MemStore 中找到数据,则直接返回。
5. 如果在 MemStore 中未找到数据,则在 StoreFile 中查找。
6. 如果在 StoreFile 中找到数据,则返回。
7. 如果在 StoreFile 中未找到数据,则向更高层级的 StoreFile 查找,直到找到或查找到最顶层的 StoreFile。
8. 如果在所有的 StoreFile 中都未找到数据,则返回不存在的结果。
阅读全文