HBase 架构分析

Posted 码省理工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase 架构分析相关的知识,希望对你有一定的参考价值。

知识是学不完的,做好今天就好了。

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


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


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


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

HBase 架构分析

下面分别介绍每个组件发挥的作用:


Client 通过 PRC 连接到集群。Client 与 Hmaster 交互进行管理类的操作,Client 与 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 中,完成数据恢复。



HBase 架构,欢迎拍砖。

如果对您有帮助,欢迎点赞、关注、转发



以上是关于HBase 架构分析的主要内容,如果未能解决你的问题,请参考以下文章

HBase 架构分析

HBase 与 Cassandra 架构对比分析的经验分享

Hbase的应用场景原理及架构分析

Hbase的应用场景原理及架构分析

大数据架构开发 挖掘分析 Hadoop HBase Hive Storm Spark ZooKeeper Redis MongoDB 机器学习 云计算

大数据架构开发 挖掘分析 Hadoop HBase Hive Storm Spark Sqoop Flume ZooKeeper Kafka Redis MongoDB 机器学习 云计算 视频教程 J