HBase-6 HBase读写流程

    技术2026-04-10  8

    HBase读写流程

    写在前面HBase建表流程简易版HBase写数据流程手绘版 HBase读数据流程

    写在前面

    老版本的读写框架为zk-root-meta表-数据所在的region(在这不做介绍)新版本的读写框架为zk-meta表-数据所在的region(本篇的流程)

    HBase建表流程简易版

    平时各个resigonserver 向Hmaster发送心跳:报告在磁盘 有哪些region等等建表时Hmaster决定regionserver 中的region中然后类似写流程

    HBase写数据流程

    HLog(write ahead log): 也称为WAL意为Write ahead log,类似mysql中的binlog,用来做灾难恢复时用,HLog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。

    Client从ZK上找到meta表的位置Client通过namespace、表名和rowkey找到对应的regionClient找到这个region对应的HRegionServer,发送请求Client将写数据操作写到HLog中,将数据写到memstore中。 数据写到memstore成功即返回写入成功,而不必等待数据落地到磁盘。此处和其他框架不太一样。 memstore达到阈值后把数据刷写到磁盘,生成storefile删除HLog中的操作数据

    手绘版

    HBase读数据流程

    Hbase集群,只有一个meta表,该表的信息存储在zk上。meta表只有一个region,该region数据保存在某一个HRegionServer上 该meta表可能达到几十G,而ZK只是简版的文件系统,用来存储其他分布式框架的比较小的元数据信息,所有meta表存储在HRegionServer上

    Client从ZK下的/Hbase/meta-region-server中获得HBase:meta表所在的region在哪个HResigonServer上和它的具体位置Client根据要查询的namespace、表名和rowkey信息从HBase:meta获得要查询的数据表所在的region信息(在哪个HRegionServer,在HRegionServer的哪个region等等)Client找到对应的HRegionServerClient找到对应的region从memstore查找数据,找不到就从blockcache上查找数据,仍然找不到数据再去storeFile上查找数据 HBase上的HRegionServer级别的内存有两部分: memstore,主要用来写数据blockcache,主要用来读取数据 若数据从storeFile找到的,则将数据缓存到blockcache上。可以加快后续查询
    Processed: 0.009, SQL: 9