大咖分享

Hadoop家族新成员Hbase重磅来袭
北大青鸟总部

摘要:Hbase是基于HDFS的非关系型大数据,非常适合存储,因为它可以像HDFS一样做到存储的线性扩容,无论多少数据都可以存储。Hbase数据库继承了Hadoop家族的良好基金,用来存储海量数据。

说起Hadoop,玩大数据的没有一个不知道,Hadoop是由Apache基金会所开发的一个分布式系统基础架构,包含分布式文件系统HDFS(HadoopDistributed FileSystem)、分布式计算框架MapReduce、HIve数据仓库、Avro序列化工具等。而今天我们要给大家介绍一位新朋友Hbase,它是基于HDFS的非关系型大数据(非常适合存储,因为可以像HDFS一样做到存储的线性扩容,无论多少数据都可以存储;)



Hbase数据库继承了Hadoop家族的良好基金,它是用来存储海量数据的,百万以下的数据量就不要打扰它了。既然是存储使用使用,那么它是如何做数据存储的呢?为了大家更好的理解概念,我们与同一个数据在传统的关系型数据库如Mysql中的存储做对比进行理解。现在我们来存储学生张三和李四的信息,包含编号、姓、名、密码、学号,在Mysql中会分成两行五列存储。



而在HBase中则会将数据从逻辑上分为三部分,第一部分为rowkey唯一标识(即Mysql中的主键),第二部分则把相同属性的内容划分到同一个Column-Family中,比如姓名、账号,每一个Column-Family就是一个Qualifier,而里面具体的值就是CellValue。在下表(逻辑关系)中Rowkey是1,CF是姓名属性、账号属性,Qualifier是info、pwd,Value是张、三、20160719、111。



在Hbase中物理存储如下,Version代表的是版本,在Hbase中允许一个值有多个版本,通过Version号来标记。将上面的逻辑数据拆解后,如下图所示,hbase会进行如下存储。从存储方式来看,一个CF对应一个HFile,而HFile在HDFS分布式文件系统中,是可以无限扩张,因此Hbase的存储能力也可以无限扩张。细心的朋友不要以为HFile只能存储在HDFS上噢,它其实在本地的文件系统也可以存储使用,只不过就是存储能力有限,无法扩展而已。



介绍完了Hbase的数据存储模式,我们来看看它的架构图,在Hbase中从上往下包含API、Master节点、RegionServer、Region、HDFS五大部分,在实际使用过程中使用分布式协调器Zookeeper来协调MasterServer的负载,确保使用Hbase是处于工作状态。



在Hbase中Master节点是用来协调多个Regionserver节点的,确保RegionServer是处于工作状态。而为了保证系统的高可用,也要确保Master节点不能挂掉啊,因此Zookeeper会来做Master节点的整体监控,当有Master节点挂掉时,选举出新的Master节点来接管工作。

Regionserver包含多个Region,用于管理表格、读写数据,通过对外提供API可以直接获取Region的数据,Region则是真正存储数据的地方,一般一个Region对应一个CF,但是当表格数据很大由多个CF组成时,就会存储在多个Region中,通过存储单元Store关联起来。同时Zookeeper也会管理多个Regionserver之间的协调调度。

下图是Hbase工作的原理图,从图上我们看到RegionServer还包含WAL、Memstore、Hfile几部分。WAL是HBase为了保障数据一致性的一个设计,为了提高数据读写性能,并且保证数据准确,HBase会把数据先写入到内存,但内存并不是一直可靠啊,万一断电了数据全没了,因此在写入内存时,也会写一份日志,当内存挂掉时,通过日志的数据可以知道内容,实现数据恢复。写入到内存的数据一般放在Memstore中,然后再定期的把Memstore的数据存储在磁盘,然后清空Memstore。HFile就是Hbase最终存储数据的实体了,本质上也就是HDFS的一个文件,一个CF存储在一个HFile中。



本文介绍了HBase数据库,它与Hive、Mysql还是不太一样噢,Hive专注于数据分析,底层依靠的更多是MapReduce的计算能力,而Mysql是关系型数据库,主要聚焦在事务的ACID(原子性、一致性、持久性、),Hbase则更多的是聚焦在数据的存储方便。如果你的数据足够多,上亿万的数据才考虑使用Hbase,数据量太小反而是发挥不出优势,也没办法做数据的其他处理。在决定使用Hbase之前,要确保硬件条件到位,一般来说HDFS集群的数据节点少于5个时,基本也等于鸡肋,相当于摆好了一个大阵仗,飞机坦克步兵炮兵全上了,以为是来了一个连的敌人,结果只来了一个班。

不过总的来说Hbase还是非常优秀的一款大数据,在很多互联网公司的信息存储都使用Hbase,在流数据存储、实时计算时,Hbase也是很好的选择,相信今天大家了解了Hbase数据之后,可以更好的将Hbase使用在业务当中,输出更好的大数据解决方案。


相关阅读
大数据应用能识别抑郁风险人群?准确率这么高!
又快又好用的数据分析工具ApacheKylin来了!
我们是如何被大数据杀熟的?
大数据时代,我们如何选OLAP数据分析引擎
​如何从0到1搭建数据仓库?轻量级数据分析必备
热门推荐