HBase的使用

青春壹個敷衍的年華 提交于 2021-02-15 01:55:43

前言

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上。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!