一文读懂 HBase 核心知识

一、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有着比较广泛的应用场景:

  • 订单/消息存储:HBase可以支持金融、电信领域的订单/账单查询,另外不少通信、消息同步的应用也构建在HBase之上。
  • 用户画像:可以支持用户画像的存储,蚂蚁的风控就是构建在HBase之上。
  • 对象存储:不少头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中。
  • 时序数据:HBase之上有OpenTSDB模块,可以满足时序类场景的需求。
  • 时空数据:主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外在车联网企业有不少数据存在HBase之中。
  • Cube分析:Kylin一个cube分析工具,底层的数据存储在HBase之中,不少客户自己基于离线计算构建的cube也存储在hbase之中,满足在线报表查询的需求。
  • Feeds流:高并发请求访问,典型的场景就是朋友圈类似的应用。
  • NewSQL:HBase之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求。

四、HBase2.0新特性介绍

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

  • Mob小对象存储:可以高效的存储100KB~10M中等大小对象,能够满足一般文档、图片的存储。
  • 读写链路的Offheap:引入OffHeap降低GC影响,优化了读写链路延迟。
  • Region Replica:为Region引入副本,提供高可用读,避免宕机影响。
  • In-Memory Compaction:内存先进行flush然后compaction,当达到一定阈值再flush到磁盘,减少了磁盘io同时提升了读性能。
  • Assignment Manager V2:基于Procedure V2,使得Region assign/unassign的速度大大提升,能够更好的解决Region长时间RIT问题。
  • 其他

五、总结

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容