HBase读写原理
在HBase中,读写是两个核心操作,下面将介绍HBase的读写流程。

HBase读流程
在HBase中,读流程包括以下步骤:
- Client访问zookeeper,并从meta表读取region的位置和数据。
- 根据namespace、表名和rowkey在meta表中找到对应的region信息。
- 找到该region对应的regionserver。
- 查找对应的region。
- 先从MemStore中查找数据,没有再从BlockCache中读取。
- 如果BlockCache中仍没有,再从StoreFile中读取。
- 如果从StoreFile中读取数据,则先写入BlockCache,再返回给客户端。
HBase写流程
在HBase中,写流程包括以下步骤:
- Client向HregionServer发送写请求。
- HregionServer将数据写到HLog(writeaheadlog)。
- HregionServer将数据写到内存(MemStore)。
- 反馈Client写成功。
此时,数据还未写到磁盘上,如果发生故障可能会导致数据丢失,因此需要进行数据flush。
数据flush过程
当MemStore中的数据达到阈值(默认为128M)时,将数据刷到硬盘上,同时将数据删除,删除HLog中的历史数据,并将数据存储到HDFS中。
在写入过程中,如果数据量较大,会进行数据合并和拆分。
数据合并过程
数据块达到4块时,Hmaster将数据块加载到本地进行合并。当合并的数据超过256M时,进行拆分,并将拆分后的Region分配给不同的HregionServer进行管理。当HregionServer宕机后,将Hlog拆分,然后分配给不同的HregionServer加载,修改.META.。
当出现HLog灾难时,可以使用以下方法进行恢复:
- 不要对regionserver进行任何操作,持续观察WALlog日志是否在跟新恢复。
- 等待HLog灾难恢复完成后观察GC,若GC几乎没有再次积压,则前端业务可以正常处理积压。
以上是HBase读写的原理和流程,希望对读者有所帮助。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6289.html
