【HBase】HBase 底层原理

本文深入探讨了HBase的系统架构,包括.ZOOKEEPER., .META.表的角色,以及RegionServer和Master的工作机制。重点讲解了物理存储结构,如HRegion、Store、MemStore和StoreFile的组织,强调了预写日志(HLog/WAL)在数据恢复中的作用。文章还详细介绍了数据寻址和读写过程,包括BloomFilter在提高查询效率中的应用,以及写请求的数据流向。通过对HBase内部机制的解析,展示了其高可用性和高效数据处理能力。" 113772469,9342206,Python日期时间处理完全指南,"['python', '数据分析', '时间日期处理']
摘要由CSDN通过智能技术生成

1. 系统架构

在这里插入图片描述
注意:是每一个 RegionServer 就只有一个 HLog 而不是一个 Region 有一个 HLog

Client 职责:

  • HBase 有两张特殊表:
    .META.:记录了用户所有表拆分出来的的 Region 映射信息,.META.可以有多个 Regoin
    -ROOT-:记录了.META.表的 Region 信息,-ROOT-只有一个 Region,无论如何不会分裂
  • Client 访问用户数据前需要首先访问 ZooKeeper,找到-ROOT-表的 Region 所在的服务器位置,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的服务器位置去访问,中间需要多次网络操作,不过 client 端会做 cache 缓存。

ZooKeeper 职责

  • ZooKeeper 为 HBase 提供 Failover 机制,选举 Master,避免单点 Master 单点故障问题
  • 存储所有 Region 的寻址入口:-ROOT-表在哪台服务器上。-ROOT-这张表的位置信息
  • 实时监控 RegionServer 的状态,将 RegionServer 的上线和下线信息实时通知给 Master
  • 存储 HBase 的 Schema,包括有哪些 Table,每个 Table 有哪些 Column Family

Master 职责

  • 为 RegionServer 分配 Region
  • 负责 RegionServer 的负载均衡
  • 发现失效的 RegionServer 并重新分配其上的 Region
  • HDFS 上的垃圾文件(HBase)回收
  • 处理 Schema 更新请求(表的创建,删除,修改,列簇的增加等等)

RegionServer 职责

  • RegionServer 维护 Master 分配给它的 Region,处理对这些 Region 的 IO 请求
  • 负责和底层的文件系统 HDFS 的交互,存储数据到 HDFS
  • 负责 Store 中的 HFile 的合并工作
  • RegionServer 负责 Split 在运行过程中变得过大的 Region,负责 Compact 操作

综上,可以看到:

  • client 访问 HBase 上数据的过程并不需要 Master 参与(寻址访问 ZooKeeper 和RegioneServer,数据读写访问 RegioneServer),Master 仅仅维护者 Table 和 Region 的元数据信息,负载很低。
  • .META. 存的是所有的 Region 的位置信息,那么 RegioneServer 当中 Region 在进行分裂之后的新产生的 Region,是由 Master 来决定发到哪个 RegioneServer,这就意味着,只有 Master知道 new Region 的位置信息,所以,由 Master 来管理.META.这个表当中的数据的 CRUD

所以结合以上两点表明,在没有 Region 分裂的情况,Master 宕机一段时间是可以忍受的。

2. 物理存储

2.1 整体物理结构

在这里插入图片描述

  1. Table 中的所有行都按照 RowKey 的字典序排列。
  2. Table 在行的方向上分割为多个 HRegion。
  3. HRegion 按大小分割的(默认 10G),每个表一开始只有一个 HRegion,随着数据不断插入表,HRegion 不断增大,当增大到一个阀值的时候,HRegion 就会等分会两个新的 HRegion。 当表中的行不断增多,就会有越来越多的 HRegion。
  4. HRegion 是 Hbase 中分布式存储和负载均衡的最小单元。最小单元就表示不同的 HRegion可以分布在不同的 HRegionServer 上。但一个 HRegion 是不会拆分到多个 server 上的。
  5. HRegion 虽然是负载均衡的最小单元,但并不是物理存储的最小单元。事实上,HRegion由一个或者多个 Store 组成,每个 Store 保存一个 Column Family。每个 Strore 又由一个MemStore 和 0 至多个 StoreFile 组成

2.2 Storefile 和 HFile 结构

StoreFile 以 HFile 格式保存在 HDFS 上,请看下图 HFile 的数据组织格式:
在这里插入图片描述
首先 HFile 文件是不定长的,长度固定的只有其中的两块:Trailer 和 FileInfo。
正如图中所示:
Trailer 中有指针指向其他数据块的起始点。
FileInfo 中记录了文件的一些 Meta 信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY 等。

HFile 分为六个部分:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值