HBase讲解

1.HBase在Hadoop中的位置

HBase(Hadoop Database)是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。
存储在HBase中的表的典型特征:

  • 大表(BigTable):一个表可以有上亿行,上百万列
  • 面向列:面向列的存储、检索与权限控制
  • 稀疏:表中为空(null)的列不占用存储空间

2.HBase集群典型部署组网

1.png

Master:又叫HMaster,负责HBase中Table和Region的管理,包括表的增删改查;Region Server的负载均衡,Region分布调整;Region分裂以及分裂后的Region分配;Region Server失效后的Region迁移等。
ZooKeeper cluster:Zookeeper集群存储-ROOT-表的地址和Master地址,Region Server主动向Zookeeper注册,使得Master可随时感知各Region Server的健康状态。 Zookeeper另一个重要作用是避免Master 单点故障(SPOF)。
RegionServer:负责数据路由、数据读写和数据持久化,是HBase 的数据处理和计算单元,同时还负责区域的分割(即Region Split)。 RegionServer要求和HDFS的DataNode一起部署。

3.HBase系统架构

2.png

HBase Client:Client使用HBase的RPC机制与HMaster、HRegionServer 进行通信。 Client与HMaster进行管理类通信,与HRegion Server进行数据操作类通信。

HRegionServer:HRegionServer内部管理了一系列HRegion对象,每个HRegion对应Table中的一个Region。HRegion由多个Store组成。每个Store对应Table中的一个ColumnFamily的存储,即一个Store管理一个Region上的一个列族(CF)。每个Store包含一个MemStore和0到多个StoreFile。 Store是HBase的存储核心,由MemStore 和 StoreFile组成。

HLog:数据在写入时,首先写入预写日志(Write AheadLog),每个HRegionServer服务的所有Region的写操作日志都存储在同一个日志文件中。数据并非直接写入HDFS,而是等缓存到一定数量再批量写入,写入完成后在日志中做标记。

MemStore and StoreFile:MemStore是 一个有序的内存缓存区,用户写入的数据首先放入MemStore,当MemStore满了以后Flush成一个StoreFile(存储时对应为HFile), 当StoreFile数量增到一定阈值,触发Compact合并,将多个StoreFiles合并成一个StoreFile。StoreFiles 合并后逐步形成越来越大的StoreFile,当Region内所有StoreFiles(Hfile)的总大小超过阈值(hbase.hregion.max.filesize)即触发分裂Split,把当前的Region Split成2个Region,父Region下线,新Split出的2个孩子Region被HMaster分配到合适的HRegionServer 上,使得原先1个Region的压力得以分流到2个Region上。

4.HBase数据模型

存储在HBase表每一行数据都有可排序的关键字(Row Key)和任意列项(Column &Column Family)。在HBase中,仅能通过主键(Row Key)和主键版本号来检索数据,仅支持单行事务。下面以HBase存储搜索引擎的网页为例:

3.png

Row Key:行键,相当于关系表的主键,每一行数据的唯一标识。字符串、整数、二进制串都可以作为RowKey。所有记录按照RowKey排序后存储。

Time Stamp:每次数据操作对应的时间戳,数据按时间戳区分版本,每个Cell的多个版本的数据按时间倒序存储。

ColumnFamily:Column Family,列簇,一个表在水平方向上由一个或多个CF组成。一个CF可以由任意多个Column组成。Column是CF下的一个标签,可以在写入数据时任意添加,因此CF支持动态扩展,无需预先定义Column的数量和类型。 HBase中表的列非常稀疏,不同行的列的个数和类型都可以不同。此外,每个CF都有独立的TTL(生存周期)。可以只对行上锁,对行的操作始终是原始的。

5.HBase的物理存储结构

建表时默认只有一个Region,如果指定Split Key,就会有多个Region。当表的记录行超过阈值,表按水平方向分割成2个Region,可把Region理解为子表。当Region的行数超过阈值,Region继续分裂。不同的Region被HMaster分配给合适的HRegionServer管理。每个Region都包含一个随机ID,Region内的数据按照Row Key有序存储。


11.PNG

HBase在进行数据存储时,物理上将同“列簇”的数据存储在一起,不同“列簇”的数据分开存储。例如这里的Store1-1对应存储表Region1上的CF1的所有数据,底层实际存储时为一个HFile。


114.PNG

HBase文件目录讲解:

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

推荐阅读更多精彩内容

  • 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hb...
    飞鸿无痕阅读 50,038评论 19 271
  • Hbase架构与原理 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang所撰写的Goo...
    全能程序猿阅读 86,209评论 2 37
  • 1. HBase介绍,Hbase是什么? HBase -- Hadoop Database ,是一个高可靠、高性能...
    奉先阅读 3,679评论 1 36
  • 简介 [HBase]——Hadoop Database的简称,Google BigTable的另一种开源实现方式,...
    高广超阅读 2,285评论 1 27
  • 一、HBase简介 Hbase是什么 HBase是一种构建在HDFS之上的分布式、面向列、多版本、非关系型的数据库...
    便利蜂数据平台阅读 950评论 0 4