HBase架构与原理

HBASE基本概念

Hbase是构建在HDFS上的分布式列存储系统,用于海量结构化数据存储

为什么需要HBASE?我们来了解下HDFS作为基本存储所存在的问题:

  1. 不支持数据随机查找
  2. 不适合增量数据处理(新来的一批数据不能单独处理,需要统一跟旧数据再处理一遍)
  3. 不支持数据更新(更新某行数据,某个字段,只支持整行数据的扫描,文件追加等)

而HBase的基本特点如下

  • 规模大:一个表可以有数十亿行,上百万的列
  • 无固定模式:每行都有个可按字典排序的主键row key和任意多的列column family。列可以根据需要来动态的增加,同一张表中不同行可以有截然不同的列。
  • 面向列:面向列存储和权限控制,每个列作为一个单位进行存储,列独立检索。
  • 空间稀疏:某行对应的某个列为空时,不会占用存储空间,因此表格可以设计得很稀疏
  • 数据多版本:每个列单元中的数据可以有多个版本,默认下版本号是数据插入单元格的时间戳
  • 数据类型单一:hbase中的数据都是字符串,没有多种类型。

因而衍生出了Hbase等列式存储数据库,来应对不同的应用场景。

我们对行存储与列存储做下对比,如下图:

image.png

可以看到,列式存储在应对高并发量的简单读写操作时,将会大大节省建立索引或者无索引时的按行查找时间与存储空间。并且数据类型的一致也保证了压缩的有效性

下面,看一下数据在HBASE中的具体存储方式

每一行数据有两个大的单元,一个主键row key一个data,data单元中有若干个列族column families,每个column families有若干个column列字段。可以看到,有些字段懈怠了相同的属性名,因为字段携带了上面所提到的不同版本号——时间戳,代表了该字段不同时间的value。

image.png

Hbase基本概念

下面介绍下Hbase的存储字段

  • row key

是表中每条记录的主键,方便快速查找,以byte array的形式存储

  • column family

拥有一个String类型的名称,包含了一个或者多个相关的列

  • column

从属于某一个column family,包含在某一列中。格式为 column familyName:columnName

  • version number

每个rowkey拥有多个version number,默认值为系统的时间戳,类型为long。无需以递增的顺序插入,可由用户提供

  • value

同样以byte array字节数组形式存储

其中,hbase的所有操作是基于rowkey的,支持增删查改操作,如单行的put,get,scan,多行的scan,multiput等。若需要join操作,则需使用MR来解决

HBASE为每个值维护了多级的索引<key,column family,column name,timestamp>。每个column family存储在HDFS上一个单独的文件中,key和version number会冗余地在每个column family中存储一份,其中空值不会被存储。

HBase物理存储

HBase table的行按照row key的字典序排列,在行方向上分割为多个region。region随着数据量增多,达到一个阈值时会切分为两个region。

其中,region是HBASE中分布式存储和负载均衡的最小单元,不同region分配到不同的region Server中,方便进行并行的处理。

虽然region是作为数据切分和迁移时的最小单元,但实际存储数据的最小单元是store。每个region由一个或多个store组成,每个store保存一个columns family。每个store由一个memstore和0至多个storeFile组成,menstore存储在内存中,storeFile存储在HDFS上。当menstore存满时,将数据溢出到storefile中。

image.png

下面,看一下hbase与HDFS结合的一个经典架构图。client可以与regionServer直接进行通信读写,并间接的与master通信。这样保证了master挂掉时,用户仍然可以进行常规的读写操作,但是需要一定时间等待master的恢复,才能够完成如某个region Server挂掉,将数据迁移等切分、负载均衡的操作。同时,失效服务器上“预写”日志(下面提到的write-ahead-log机制)由master进行分割并派送给新的regionserver

HBASE架构

HBASE基本组件

HBase架构中涉及的各个组件与作用如下图:

HBASE基本组件
  • write-ahead-log机制

是一种数据的预写操作。hbase在将数据存入region前,先将数据存入log中,方便在数据写入失败时可以从log进行恢复。

  • region定位

那么,查找数据时是如何定位到不同节点上的region呢?

首先,zookeeper到唯一存储在某个region上的root表查找对应meta表的位置,然后在指定region上找到meta表以及regionserver的服务器地址后,再查找用户数据表的具体region位置。

每次查找访问都会进行如此麻烦的四个步骤吗?为了避免这样低效的操作,第一次查找后会将用户表的地址信息缓存到本地,如同将常用的地址放到Cache中一样,以方便下次的访问。

应用场景

最后,说一下HBase适用的一些场景

  1. 对数据进行随机的读、写操作
  2. 高并发操作,如每秒PB级别数据的上千次操作
  3. 读写访问为简单操作

在Facebook中的应用-消息系统

  1. 聊天系统:一个较小的临时数据集,经常变化
  2. 邮件系统:一个不断增加的数据集,但旧内容很少访问

总结:HBASE在互联网公司的后台信息存储中应用很多,正是它的出现使得hadoop生态系统服务更加全面,值得笔者继续深入学习。

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

推荐阅读更多精彩内容

  • HBASE 概述 HBase是什么 HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、...
    yanzhelee阅读 439评论 0 2
  • 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hb...
    飞鸿无痕阅读 50,224评论 19 272
  • 1. HBase介绍,Hbase是什么? HBase -- Hadoop Database ,是一个高可靠、高性能...
    奉先阅读 3,738评论 1 36
  • 原创文章,转载请注明原作地址:http://www.jianshu.com/p/0f9578df7fbc 一. 架...
    EchoZhan阅读 15,144评论 4 33
  • HBase那些事 @(大数据工程学院)[HBase, Hadoop, 优化, HadoopChen, hbase]...
    分痴阅读 3,937评论 3 17