大数据,机器学习,人工智能HBase生态技术

一文读懂 HBase 核心知识

2020-02-05  本文已影响0人  大数据技术架构

一、HBase核心概述

HBase(Hadoop Database)是一个基于Google BigTable论文设计的开源、高可靠性、高性能、可扩展的分布式存储系统。HBase存储引擎是通过LSM树(Log-Structured Merge Tree)结构实现的,底层数据存储基于HDFS,原生的支持MapReduce作为计算引擎,具有高吞吐、低延时的读写特点。

1、数据模型

首先讲一下HBase的数据模型。HBase数据存储在 table 中,table 具有松散表结构(schema-free),不需要预先定义好schema,只有在数据写入时才须定义Column,理论上数据列可以无限多。

HBase的列由列族(Column Family)和 列限定符(Column Qualifier)组成,以逗号分隔标识一个列。HBase数据是按Rowkey进行字典排序的,Rowkey相当于关系型数据库的主键,数据写入时必须指定Rowkey。HBase中的Rowkey、列族、列限定符共同组成一个称为Cell的存储单元,Cell包含具体的数据,以及用于区分Cell版本的 timestamp。

2、列族式存储

HBase是面向列族存储的。HBase每一列数据在底层是以 KV 形式存储的,针对一行数据,如果其列族相同,那么这些列的数据是顺序相邻存放的,所以是看上去像是以列族为伪列进行列式存储的,实际上并不是真正的列式存储,而是面向列族存储,或者说Column Family级别列存。

3、自动分区

HBase支持自动分区。HBase表在水平方向上根据Rowkey被划分成多个Region,由[startkey,endkey)表示,Region是HBase读写可用性、分布式存储和负载均衡的基本单元。Region分散在不同的RegionServer中,使得数据分片分布在整个集群。当Region达到一定大小时(hbase.hregion.max.filesize)就会自动分裂成两个Region,达到自动分区的效果。

4、单列索引

默认情况下HBase对Rowkey做了单列索引,所以HBase能通过Rowkey进行高效的随机查询或范围查询。相对来说,HBase索引还是比较单一,通过非Rowkey列查询性能比较低,除非对非Rowkey列做二级索引(secondary index),目前二级索引方案大多是基于 HBase Coprocessor即协处理器实现,比如Phoenix。

5、刷写与压缩

由于HBase基于LSM Tree思想设计,新增变更的数据首先写入 WAL(Write Ahead Log),然后会写到Region的内存缓冲区MemStore中,当MemStore大小达到一定阈值或满足其他触发条件时,数据会刷写到磁盘(Flush)生成StoreFile(HFile),HFile是HBase底层数据的文件存储格式。

随着时间的推移,磁盘中会存在大量的HFile文件,文件过多会严重影响读取HBase的性能,为了提高性能,HBase会做合并HFile文件(Compaction)操作,以减少文件个数,清理过期或删除的数据。

二、HBase生态组件介绍

随着HBase功能越来越完善,构建在HBase之上的生态环境也越来越健全,衍生了包括SQL,时序,时空,以及图等各个方面的项目:


三、HBase应用场景

HBase是一个存储系统,也是一个NoSQL数据库。由于HBase丰富的特性,加上自身的并发能力、存储能力与高效读写能力,使得HBase有着比较广泛的应用场景:

四、HBase2.0新特性介绍

2018年4月份HBase发布了2.0版本,是HBase迄今为止非常重要的一个大版本,有很多值得关注的Features,下面列举其中非常重要的几个特性:

五、总结

HBase是架构在HDFS之上面向列的分布式存储系统,在很多领域都有广泛应用,主要解决高并发、随机读写的业务场景,适合海量数据的永久性存储。

国内很多知名公司如阿里、腾讯、小米、滴滴、360等都在使用HBase,并有很好的应用实践。后续介绍更多HBase技术细节。

上一篇下一篇

猜你喜欢

热点阅读