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集群,只有一个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上。可以加快后续查询