前言
HBase是一个高可靠,高性能,面向列,可伸缩的分布式存储系统,适用于结构化的存储,底层依赖于Hadoop的HDSF,利用HBase可以在廉价PC server上搭建起大规模结构化存储集群。HBase被广泛应用于大数据存储解决方案中。
HBase 特点
HBase优点:
- 列可以动态增加,列为空不会存储数据,节省存储空间
- 自动切分数据,是的数据存储具有水平扩展性
- 可以提供高并发读写操作的支持
HBase缺点:
- 不支持条件查询,只支持按照Row Key来查询
- 不适合传统的事务处理或关联分析,不支持复杂查询
如果应用中的数据每行结构都有差别,可以适用于HBase存储松散数据。可以动态增加列,如果列为空不会存储数据,如果提供的数据存在一个主键,可以依靠HBase的rowkey提供高效查询。
HBase使用场景
卖家操作日志
用来记录商家操作的日志系统,保证商家可以精确查询自己各种操作。卖家无时无刻不再操作,所以卖家操作日志具有数据量大,实时性强,增多查少特点。
最初的设计是将操作日志放到ES中,操作日志数据量大,当时ES资源有限,所以将最近三个月的数据存储到ES中,而长期数据存储使用HBase进行。
消息日志存储
消息日志用来进行全链路追踪及消息的统计分析,每天有几千万消息量。消息追踪要求实时性,多维度精确查询,将最近一周消息日志存储在ES中,在定期将HBase中数据倒入数据集市中,方便对消息进行统计分析。
HBase架构
Master
Master用于协调多个Region Server,监测各个Region Server之间的状态,平衡Region Server之间负载。Master还负责分配Region给Region Server。允许多个Master节点工程,需要借助ZK。多个Master节点共存时,只有一个Master是提供服务的,其他Master节点处于待命状态,当正在工作的Master节点宕机,其他Master会接管HBase的集群。
Region Server
一个Region Server中包括多个Region,Region Server作用是管理表格,实现读写操作。Client直接连接Region Server,通信获取HBase中的数据。Region则是真实存放HBase数据的地方,Region是HBase的可用性和分布式的基本单位。如果一个表格非常大,由多个CF组成时,表的数据将存放在多个Region之间,并在每个Region中会关联多个存储单元(Store)。
ZK
ZK作为HBase Master的HA解决方案,ZK保证了至少只有一个HBase Master处于运行状态。ZK负责Region和Region Server的注册。
基本原理
HBase通过ZK进行机器之间的协调,Master和Region Server之间的关系通过ZK协调维护。当Client需要访问HBase集群时,client需要先和zk通信,找到对应的Region Server。每个region server管理多个region。
每个region都只存储一个column family数据,该CF中的一段(按照Row的区间分成多个region)。region能存储数据的大小是有上限的,达到上限时,region会进行分裂。数据会分裂到多个region中,这样便于提高数据并行化,提高数据容量。
每个region包含多个store对象,每个sotre包含一个memstore,和一个或多个hfile。 memsotre是数据在内存中的实体,一般是有序存储的,数据向region写时,先写入memsotre,当memstore中数据需要向底层文件系统Dump时,sotre会创建storefile,sotrefile是对hfile的封装。所以memstore中数据最终会写入到hfile中,就是磁盘io。由于HBase底层依靠hdfs,hfile都存储在hdfs上。
来源:oschina
链接:https://my.oschina.net/u/1000241/blog/3048564