HBase 架构分析

作者 : 开心源码 本文共1805个字,预计阅读时间需要5分钟 发布时间: 2022-05-12 共181人阅读

阅读本文大概需要? 3 分钟。

Hbase 简单一句话形容就是:基于?HDFS 存储面向列、高可靠分布式数据库。底层使用 HDFS 作为存储系统,使用 MapReduce 来作为计算框架,Zookeeper 为它已提供刻可靠性和failover(故障切换)机制,其中 Zookeeper 的作用还不止这些,下面会提到 zookeeper 在 HBase 的其余作用。

HBase 使用场景:1.海量数据存储。2.快速随机访问。3.大量写操作的应用场景。

本文将从 HBase 的架构开始,如下图所示,有些细节没有画出来。

下面分别详情每个组件发挥的作用:

Client?通过 PRC 连接到集群。Client 与 Hmaster 交互进行管理类的操作,Client 与 HReginServer 交互进行读写操作。

Zookeepr?记录 -Root 表的位置,Hmaster 的地址,并且 HReginServer 会以Ephedral的方式注册到 zookeeper 上,这样 Hmaster 即可以随时感知 HReginServer 的健康状态了。

Hmaster?可以启动多个,通过 zookeeper 的Master Election机制保证总有一个Master在运行。它主要是是做少量管理操作,比方:1.管理客户对表的增删改查操作、2.管理 RegionSever 的负载均衡和调整 regins 分布。3.regins split 之后负责调整新的 region 分布、4.在 RegionServer 停机之后,负责失效机器上的 Region 迁移。

HRegionServer?是最核心的组件了,主要是负责用户端的读写 IO 请求,向 HDFS 读写数据。每个 HRegionServer 负责管理少量 HRegion 对象,每个 HRegion 对象对应 Table 表的 regin,每个HRegion 有多个 HStore 组成。而每个 HStore 对应 Table 中的一个 Column Family 的存储。其中Column Family 是一个几种的存储单元,故将相同 IO 特性的 Column 放到同一个Column Family 中会更加高效。

HStore?是由两部分组成:MemStore 和 StoreFile,在 hbase 中,数据在升级时会首先写入?WAL 日志和内存中,在内存中的数据是排序的,当 MemStore 累积到肯定阈值的时候,就会创立一个新的 MemStore 并且将老的 MemStore 增加到?Flush 队列中,有单独的线程 flush 到磁盘中,成为一个 StoreFile?。

StoreFile?是可读的,一旦创立就没有办法修改了,所以之后进来的数据(不论是新添加还是升级数据),都会经历内存到写到一个新的 StoreFile 的过程,但是随着 StoreFile 的数量一致积累到肯定阈值,此时会触发Compact 操作,即把所有的小文件(StoreFile)里面的数据根据 row key进行版本合并和删除,生成一个大的 StoreFile, 单个StoreFile 的大小超过肯定的阈值,会触发?Split 操作,把当前的 Region 等分成两个 Region。新的两个 Region 会被分配到 Hsmater 分配到对应的 HRegionServer 上。

小结:从上面这段话也可以得出一个结论,就是 HBase 写入数据时是不断添加的一个过程,对数据的修改和删除是在 Compact 阶段进行的。这个过程客户感知不到,所以客户只管往内存里面写数据就是了,提高了写数据的吞吐量。

Hlog?,每个 HRegionServer 都有一个 Hlog 对象,Hlog 是实现了 Write Ahead Log 的类,每次客户写数据进来的时候,会先写到 Hlog 文件中,同时也会写到 MemStore 中。当 HRegionServer 宕机之后,HMatser 会通过 zookeeper 感知到,接下来 HMaster 是这样做的:

它会将遗留的 Hlog 文件根据不同的Region拆分,而后放到对应的 Region 目录下面,接下来再将这些 Region 重新分配到新的 HRegionServer 上。;领取这些新的 Region 的HRegionServer 会进行 Load Region 过程,期间它会发现有历史 HLog 需要解决,因而会 Reload Hlog 到 MemStore 中,而后 flush 到 StoreFile 中,完成数据恢复。

【大数据开发学习资料领取方式】:加入大数据技术学习交流群458345782,点击加入群聊,私信管理员就可免费领取

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » HBase 架构分析

发表回复