HBase深入----架构

在这里插入图片描述

从HBase的架构图上可以看出,HBase中的组件包括
Client、Zookeeper、HMaster、HRegionServer、HRegion、Store、MemStore、StoreFile、HFile、HLog等,接下来介绍他们的作用。
  1. Client
    (1)HBase 有两张特殊表:
    .META.:记录了用户所有表拆分出来的的 Region 映射信息,.META.可以有多个 Regoin。
    -ROOT-:记录了.META.表的 Region 信息,-ROOT-只有一个 Region,无论如何不会分裂。
    (2)Client 访问用户数据前需要首先访问 ZooKeeper,找到-ROOT-表的 Region 所在的位置,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过 client 端会做 cache 缓存。
  2. ZooKeeper
    (1)ZooKeeper 为 HBase 提供 Failover 机制,选举 HMaster,避免单点HMaster 单点故障问题。
    (2)存储所有 Region 的寻址入口:-ROOT-表在哪台服务器上。-ROOT-这张表的位置信息。
    (3)实时监控 RegionServer 的状态,将 RegionServer 的上线和下线信息实时通知给 Master。
    (4)存储 HBase 的 Schema,包括有哪些 Table,每个 Table 有哪些 Column Family。
  3. HMaster
    (1)为 RegionServer 分配 Region。
    (2)负责 RegionServer 的负载均衡。
    (3)发现失效的 RegionServer 并重新分配其上的 Region。
    (4)HDFS 上的垃圾文件(HBase)回收。
    (5)处理 Schema 更新请求(表的创建,删除,修改,列簇的增加等等)。
  4. RegionServer
    (1)RegionServer 维护 Master 分配给它的 Region,处理对这些 Region 的 IO 请求。
    (2)RegionServer 负责 Split 在运行过程中变得过大的 Region,负责 Compact 操作。
    可以看到,client 访问 HBase 上数据的过程并不需要 HMaster 参与(寻址访问 zookeeper 和 RegioneServer,数据读写访问 RegioneServer),Master 仅仅维护者 Table 和 Region 的元数据信息,负载很低。
    .META. 存的是所有的 Region 的位置信息,那么 RegioneServer 当中 Region 在进行分裂之后的新产生的 Region,是由 HMaster 来决定发到哪个 RegioneServer,这就意味着,只有HMaster 知道 new Region 的位置信息,所以,由HMaster 来管理.META.这个表当中的数据的 CRUD。
    所以结合以上两点表明,在没有 Region 分裂的情况,HMaster 宕机一段时间是可以忍受的。
  5. HRegion
    table在行的方向上分隔为多个Region。Region是HBase中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的Region Server上,但同一个Region是不会拆分到多个server上。
    Region按大小分隔,每个表一般是只有一个region。随着数据不断插入表,region不断增大,当region的某个列族达到一个阈值时就会分成两个新的region。
    每个region由以下信息标识:< 表名,startRowkey,创建时间>。
    由目录表(-ROOT-和.META.)记录该region的endRowkey。
  6. store
    每一个region由一个或多个store组成,至少是一个store,hbase会把一起访问的数据放在一个store里面,即为每个 ColumnFamily建一个store,如果有几个ColumnFamily,也就有几个Store。一个Store由一个memStore和0或者多个StoreFile组成。 HBase以store的大小来判断是否需要切分region
  7. MemStore
    memStore 是放在内存里的。保存修改的数据即keyValues。当memStore的大小达到一个阀值(默认128MB)时,memStore会被flush到文件,即生成一个快照。目前hbase 会有一个线程来负责memStore的flush操作。
  8. StoreFile
    memStore内存中的数据写到文件后就是StoreFile,StoreFile底层是以HFile的格式保存。
  9. HFile
    HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对Hile做了轻量级包装,即StoreFile底层就是HFile。
  10. HLog
    HLog(WAL log):WAL意为write ahead log,用来做灾难恢复使用,HLog记录数据的所有变更,一旦region server 宕机,就可以从log中进行恢复。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值