HBase架构组成AND读写总结(1)


官网链接请戳:HBase
Architecture Overview
推荐图书:《HBase权威指南》
HBase架构组成AND读写总结(1)
HBase架构组成AND读写总结(1)

HBase架构组成

HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由一下类型节点组成:HMaster节点、HRegionServer节点、ZooKeeper集群,而在底层,将数据存储于HDFS中,因而涉及到NameNode、DataNode等
HBase架构组成AND读写总结(1)

  • ZooKeeper

    • 实现HMaster的高可用;

    • 记录ROOT表的存储位置,ROOT找到META表位置,META表中的信息确定用户数据存放的位置(region);

    • 监控HRegionServer的状态(当挂了的时候,zk负责向HMaster报告)

  • HMaster

    • 为RegionServer分配region,故障转移;
    • 负责RegionServer的负载均衡(regionServer中region的均匀分布)
  • HRegionServer

    • 维护region,处理对这些region的IO请求;

    • 负责切分在运行过程中变的过大的region;

    • 一个table,最初是一个region,随着表增大,分裂出多个region,每个Hregion对应一个region,每个Hregion包含一个或多个Store,每个Store保存一个列族每个Store由一个memstore、0至多个storefile,storefile以Hfile格式存在HDFS中

    • BlockCache 读缓存、memstore 写缓存

    • HLog记录数据的变更信息,用来做数据恢复

HBase的读写底层实现过程

  • 写过程

    • 找到对应RegionServer,发送写请求:客户端访问ZooKeeper,查找ROOT表,获得META表信息,从META表查找,获取存在目标数据的Region信息,从而找到对应的RegionServer并发送写请求;
    • 将数据分别写到HLog和MemStore上各一份
    • MemStore达到一个阈值后则把数据刷成一个StoreFile文件(若MemStore中的数据有丢失,则从HLog中恢复)
    • 多个Hfile文件达到一定大小后,会触发Compact合并操作,合并为一个storeFile
    • StoreFile大小超过一定阈值后,会把当前region切分(Split)为两个,并由HMaster分配到相应的HRegionServer,实现负载均衡。
  • 读过程

    • 找到对应的RegionServer并发送读请求:客户端访问ZooKeeper,查找ROOT表,获得META表信息,从META表查找,获取存在目标数据的Region信息,从而找到对应的RegionServer并发送读请求;
    • 读请求先去MemStore中查数据查不到就到BlockCache中查再查不到就到StoreFile上读,并把读的结果放入BlockCache
      BlockCache采用LRU策略和分级缓存策略,当BlockCache的大小达到上限后,会触发缓存淘汰机制,将最老的一批数据淘汰掉。