HBase基本概念

简介

本文将介绍HBase的基本概念,各个组件的组成元素以及客户端与HBase服务端交互的过程

HBase的组成元素

HBase的特点是依靠HDFS文件系统,做到能够存储巨大容量的数据库。因为依赖HDFS,因此HBase有高可用的机制,即使其中一台服务器数据发生的损坏,也能通过冗余备份进行恢复。HBase还能够提供大吞吐量和低延时的查询,那么他的具体组成元素是怎么样的呢?

hbase组成元素

(1) Region
HBase的逻辑结构是一张表,但是表的大小巨大,因此HBase会对表进行切分,每一份都会存储在多台服务器上,而“这一份”数据的单位就叫做Region。
(2) RegionServer
RegionServer用于托管多个Region,本质上他是一个HDFS客户端,通常与HDFS的DataNode部署在一起,考虑到网络IO的优化,一般而言RegionServer主要负责与他部署在一块的DataNode的读写操作。
(3)HFile
HFile里面存储的是一个KeyValue对,存储数据的文件
(4)Memstore
写缓存。因为HBase的存储是按照RowKey排序的,同时在高并发写的时候如果每一次写都持久化到硬盘中,那么多次的IO操作会拖慢写性能。因此写操作会在Memstore中缓存并进行排序,然后触发flush条件后将这些数据写入到HFile中,从而提到写的效率。
(5)Write Ahead Log
在写操作之前,会将命令提前写入Log中,当服务端奔溃的时候,可以根据重做日志来恢复数据。

如何查询数据

既然一张表会被分成多个Region,那么HBase是如何定位到某一行的数据的呢?
HBase使用类似与树状结构的方法去存储元数据。
HBase的元数据存储在两个特殊的表,分别是-ROOT-表和.META.表。其中-ROOT-表只包含在1个region中。
HBase查询数据的时候,首先会从Zookeeper中查询-ROOT-所在的ReegionServer,-ROOT-会指向对应的.META.的regionServer以及region地址,最后客户端到对应的region中查询对应行的数据。

RowKey

RowKey是HBase中唯一的索引,HBase根据Rowkey排序的顺序进行存储,因此我们在设计rowKey的时候,相似的数据的RowKey尽量的紧凑和连续,以便扫描数据。如果是不变的元素,例如是用户ID,那么因为使用Hash算法去进行编码,以保证用户的分布是均衡的。

HBase表示的数据结构

HBase表示的数据结构是一个稀疏矩阵。HBase的存储是面向列存储的。
对于每一行数据而言,他都包含一个行键以及多个列族,一个列族包含多个列,同一个列族的数据是存储在一块的。

HBase与CAP

HBase不是一个ACID系统但是他提供一下保证:
(1)提供行级的写原子性保证
(2) 如果某行数据在扫描后被修改了,那么返回的数据是修改后的数据,而不是某个时间点的快照。

HBase是建立在分布式系统中的,因此我们考虑一下CAP问题
CAP产生的背景是,当有一部分机器与另外一部分机器产生分区(Partitions)的时候,这时候两个分区的数据是有可能不一致(Consistency)的。
如果不能系统不能忍受这种不一致性,那么在发生Partitions的时候是不会向外提供服务,直至恢复。
如果希望系统是可用的(Availability),那么需要忍受这暂时的不一致性,但是要保证最终的一致性,即恢复分区后最终的数据是一致的。
CAP不是在这三个元素中任选两个,而是在P的情况下选择A还是选择P
对于HBase而言,他需要保证数据的一致性,因此他选择了一致性。
参考原文

The short summary of the article is that CAP isn’t “C, A, or P, choose
two,” but rather “When P happens, choose A or C.”
Partitions, like death and taxes, are unavoidable – think of machine
death as just a partition of that machine out into the networking
equivalent of the afterlife. So it’s up to the system designer to
decide if, when that happens, we give up availability or give up
consistency.
In HBase’s case we choose consistency, so we have to give up some availability.

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

推荐阅读更多精彩内容

  • 参考:https://www.jianshu.com/p/569106a3008f 最近在逐步跟进Hbase的相关...
    博弈史密斯阅读 849评论 1 1
  • 一、Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成。对象层级图如下: T...
    达微阅读 1,489评论 0 1
  • HRegionServer内部管理了一系列HRegion对象,每个HRegion对 应了table中的一个regi...
    felix_feng阅读 472评论 0 0
  • 简介 HBase是高可靠性,高性能,面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC Serve...
    九世的猫阅读 2,179评论 1 6
  • 【什么是大数据、大数据技术】 大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法在合理时间内通过传统的应...
    kimibob阅读 2,736评论 0 51