BigTable的开源实现:HBase

在计算机数据存储领域,一直是关系型数据库(RDBMS)的天下,以至于在传统企业的应用领域,许多应用系统设计都是面向数据库设计,也就是先设计数据库然后设计程序,,从而导致关系模型绑架对象模型。

为了解决关系数据库无法处理海量数据的不足,于是就有了NoSQL的概念。

NoSQL主要指非关系的、分布式的、支持海量数据存储的数据库设计模式。今天要说的就是HBase。

HBase就是专门用来存储海量数据的,下面来说说HBase可伸缩架构。

HBase可伸缩架构

HBase为可伸缩海量数据存储而设计,实现面向在线业务的实时数据访问延迟。HBase的伸缩性主要依赖其可分裂的HRegion及可伸缩的分布式文件系统HDFS实现。
在这里插入图片描述
HRegion是HBase负责数据存储的主要进程,应用程序对数据的读写操作都是通过和HRegion通信完成。通过上图我们可以看到在HBase中数据以HRegion为单位进行管理,也就是说如果一个数据要存储首先要找到HRegion然后将读写操作提交给HRegion,完成存储。

HRegionServer是物理服务器,每个HRegionServer上可以启动多个HRegion。当一个HRegion里面写入的数据太多达到配置的阈值,就会分裂成两个HRegion,并将HRegion在整个集群中进行迁移,以使HRegionServer的负载均衡。

每个HRegion中存储一段Key值区间[key1, key2)的数据,所有HRegion信息,包括存储的Key值区间、所在HRegionServer地址、访问端口号等,都记录在HMaster服务器上。为了HMaster高可用,HBase会启动多个HMaster,并通过Zookeeper选举出一个主服务器。

获取数据流程

应用程序通过Zookeeper获得主HMaster地址,输入key值获得这个key所在的HRegionServer地址,然后请求HRegionServer上的HRegion,获得所需要的数据。
在这里插入图片描述
数据写入过程也是一样,需要先得到HRegion才能继续操作。HRegion会把数据存储在若干个HFile格式的文件中,这些文件使用HDFS分布式文件系统存储,在整个集群内分布并高可用。

小结

HBase的核心设计目标是解决海量数据的分布式存储,和Memcached这类分布式缓存的路由算法不同,HBase的做法是按Key的区域进行分片,这个分片也就是HRegion。应用程序通过HMaster查找分片,得到HRegion所在的服务器HRegionServer,然后和该服务器通信,就得到了需要访问的数据。

HBase可扩展数据模型

传统的关系数据库为了保证关系运算的正确性,必须提前设计好数据库表里的结构就是DDL执行的那些语句,但是HBase做到了可扩展数据结构,也就是不修改表结构也能新增字段,HBase采用列族(ColumnFamily)进行设计。
在这里插入图片描述
这是一个学生的基本信息表,表中不同学生的联系方式各不相同,选修的课程也不同,而且将来还会有更多联系方式和课程加入到这张表,如果按照传统的关系数据库设计,无论是提前预设多少冗余字段都会捉襟见肘、疲于应付。

HBase在设计表的时候,只需要指定列族就可以,字段只需要写入的时候在指定就可以达到随机扩展的数据结构。

本质上来说,HBase这种列族的数据结构设计,实际上是把字段的名称和字段的值,以key-value方式一起存储在HBase中。实际写入的时候随意指定字段名称。即使有几百万个字段也能轻松应对。

HBase的高性能存储

为了提高数据写入速度,HBase使用了LSM树,也就是Log结构合并树,数据写入的时候以Log方式连续写入,然后异步对磁盘上的多个LSM树进行合并。
在这里插入图片描述
LSM树可以看做是一个N阶合并树。数据写操作(rud没有create)都在内存中进行,并且创建一个新纪录。这些数据在内存中仍然还是一颗排序树,当数据量超过设定的内存阈值后,就会和最新的排序树合并,当这棵排序树的数据量也超过设定阈值后,会和下一级的排序树合并,并且覆盖旧数据。

使用LSM树存储的方式,让数据可以通过连续写磁盘的方式去保存,提升了很多的性能。

但是如果突然宕机,就需要一个操作日志来记录数据,当这些数据与集群数据合并时这段时间的部分数据是访问不到的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值