#学习笔记#章四-分布式数据库HBase-厦大

1. 简介

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表

hadoop-envm.png

4.1.3 HBase与传统关系数据库的对比分析

•HBase与传统的关系数据库的区别主要体现在以下几个方面:
•(1)数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串
•(2)数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系
•(3)存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的
•(4)数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来
•(5)数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留
•(6)可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

4.3.2 数据模型相关概念

data-model.png

4.3.3 数据坐标

HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即[行键, 列族, 列限定符, 时间戳]

place.png

4.3.4 概念视图

其实就是空的部分不存进存储部分,只切分存储数据的部分。

HBase数据的概念视图.png
HBase数据的物理视图.png

4.3.6 面向列的存储

为什么要采用面向列的存储?

  1. 同一列的数据类型是很相似的,所以它具有很高的压缩率。

  2. 现在的分析很多是针对整体的某一个特性的分析,例如使用这个产品的年龄段,性别比,等等。行存储效率低,它需要扫描全表每一行,再提取那一列的信息;列存储,则是直接取出来则可。

行式数据库和列式数据库示意图.png

4.4 HBase的实现原理

4.4.1 HBase的系统架构

HBase的实现包括三个主要的功能组件:
–(1)库函数:链接到每个客户端
–(2)一个Master主服务器
–(3)许多个Region服务器

HBase的系统架构.png
  1. 客户端
    –客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程

  2. Zookeeper服务器
    –Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题

  3. Master
    •主服务器Master主要负责表和Region的管理工作:
    –管理用户对表的增加、删除、修改、查询等操作
    –实现不同Region服务器之间的负载均衡
    –在Region分裂或合并后,负责重新调整Region的分布
    –对发生故障失效的Region服务器上的Region进行迁移

  4. Region服务器
    –Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求

4.4.2 Region的定位

•元数据表,又名.META.表,存储了Region和Region服务器的映射关系
•当HBase表很大时, .META.表也会被分裂成多个Region
•根数据表,又名-ROOT-表,记录所有元数据的具体位置
•-ROOT-表只有唯一一个Region,名字是在程序中被写死的
•Zookeeper文件记录了-ROOT-表的位置

HBase的三层结构.png
HBase的三层结构中各层次的名称和作用.png

4.5.2 Region服务器工作原理

  1. 用户读写数据过程:
    用户写入数据时,被分配到相应Region服务器去执行
  2. 缓存的刷新:
    系统会周期性地把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在Hlog里面写入一个标记
  3. StoreFile的合并
    合并操作比较耗费资源,只有数量达到一个阈值才启动合并
Region服务器向HDFS文件系统中读写数据.png

4.5.3 Store工作原理

核心就是大小要适中,不然会引发合并或分裂操作。

•Store是Region服务器的核心
•多个StoreFile合并成一个
•单个StoreFile过大时,又触发分裂操作,1个父Region被分裂成两个子Region

StoreFile的合并和分裂过程.png

4.5.4 HLog工作原理

出错时找log。

•分布式环境必须要考虑系统出错。HBase采用HLog保证系统恢复
•HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log)
•用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘

4.6.3 在HBase之上构建SQL引擎

NoSQL区别于关系型数据库的一点就是NoSQL不使用SQL作为查询语言,至于为何在NoSQL数据存储HBase上提供SQL接口,有如下原因:

1.易使用。使用诸如SQL这样易于理解的语言,使人们能够更加轻松地使用HBase。

2.减少编码。使用诸如SQL这样更高层次的语言来编写,减少了编写的代码量。

方案:
1.Hive整合HBase
2.Phoenix

4.6.4 构建HBase二级索引

HBase.png

优点: 非侵入性:引擎构建在HBase之上,既没有对HBase进行任何改动,也不需要上层应用做任何妥协

缺点:每插入一条数据需要向索引表插入数据,即耗时是双倍的,对HBase的集群的压力也是双倍的

4.7 HBase编程实践

待做


2018.6.15 以上是学习笔记,课程来自中国大学MOOC

《大数据技术原理与应用》 厦门大学计算机科学系 林子雨

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

推荐阅读更多精彩内容

  • 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hb...
    飞鸿无痕阅读 50,222评论 19 272
  • 参考:https://www.jianshu.com/p/569106a3008f 最近在逐步跟进Hbase的相关...
    博弈史密斯阅读 853评论 1 1
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,265评论 0 34
  • 1. HBase介绍,Hbase是什么? HBase -- Hadoop Database ,是一个高可靠、高性能...
    奉先阅读 3,738评论 1 36
  • 简介 HBase —— Hadoop Database的简称,Google BigTable的另一种开源实现方式,...
    尼小摩阅读 530评论 0 3