Hbase知识点

Hbase

今天的主要内容

  • Hbase角色的了解

    • HMaster

    • HRegionServer

  • Hbase中的组件及其作用

    • HLog

    • Region

    • Store

    • MemStore

    • HFile

  • Hbase架构

    • 一张图
  • Hbase读写数据的流程(图一定要熟悉)

    • Hbase读数据流程

    • hbase写数据流程

一、Hbase角色的理解

1. HMaster

  • 监控 RegionServer

  • 处理 RegionServer 故障转移

  • 处理元数据的变更

  • 处理 region 的分配或移除

  • 在空闲时间进行数据的负载均衡

  • 通过 Zookeeper 发布自己的位置给客户端

2. RegionServer

  • 负责存储 HBase 的实际数据

  • 处理分配给它的 Region

  • 刷新缓存到 HDFS

  • 维护 HLog

  • 执行压缩

  • 负责处理 Region 分片

二、Hbase中的组件及其作用

  • HLog——Write-Ahead logs

  • Region

  • Store

  • MemStore

  • HFile

1. Write-Ahead logs

  • HBase 的修改记录

  • 一个HRegionServer对应一个Hlog

  • Hlog中存放的是数据本身和对数据的操作

  • 当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。

  • 但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入内存中。

  • 所以在系统出现故障的时候,数据可以通过这个日志文件重建。因为Hlog中存放的是数据本身和对数据的操作

2. Region

  • Hbase 表的分片

  • HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer 中,在一个 RegionServer 中可以有多个不同的 region。

  • RegionServer对应着多张表,一张table又对应着多个Region,一个Region维护着一个区间的row key

3. Store

  • HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族(Column Family)。

  • 一个Region中有多个Store

4. MemStore

  • 就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL中之后,RegsionServer 会在内存中存储键值对。

  • 一个store中对应着一个MemStore,当MemStore达到16k后,写出到队列,然后产生一个新的Memstore,存在队列中的memstore实例化对象会被写到HFile中,一个memstore对应一个HFile,因此,一个Store中有一个memstore,但是有多个HFile。

5. HFile

  • 这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。

  • 是存储在HDFS中的。

  • 由HregionServer进行定期合并的,HRegionServer通过调用HDFS的API进行HFile的合并。

三、Hbase架构

image

概念理解:

· Hbase是依赖于zookeeper和hdfs的
  • HBase 内置有 Zookeeper,但一般我们会有其他的 Zookeeper 集群来监管 master 和regionserver,Zookeeper 通过选举,保证任何时候,集群中只有一个活跃的 HMaster

  • zookeeper中存储了

    • HMaster和RegionServer状态信息

    • HBase中数据的元数据寻址地址,也就是-ROOT-表的地址,即-ROOT-表存在于哪个RegionServer上

  • HMaster与 HRegionServer 启动时会向 ZooKeeper 注册,存储所有 HRegion 的寻址入口,实时监控HRegionserver 的上线和下线信息。并实时通知给 HMaster,存储 HBase 的 schema 和 table元数据。

  • 默认情况下,HBase 管理 ZooKeeper 实例,Zookeeper 的引入使得 HMaster 不再是单点故障。一般情况下会启动两个 HMaster,非 Active 的 HMaster 会定期的和 Active HMaster通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个 HMaster 反而增加了 Active HMaster 的负担。

  • 一个 RegionServer 可以包含多个 HRegion,每个 RegionServer 维护一个 HLog,和多个 HFiles以及其对应的 MemStore。RegionServer 运行于 DataNode 上,数量可以与 DatNode 数量一致。

四、Hbase读数据的流程

image

1. 寻址流程

  • Client访问Zookeeper,获取-ROOT-表的元数据信息,即表位于哪个RegionServer,并向客户端返回此RegionServer的地址(交互一:Client与Zookeeper的交互)

  • Client通过获取到的RegionServer的IP去访问RegionServer(交互二:client和RegionServer·的交互)

  • Client接着读取RegionServer中的-ROOT-表的内容,获取到.META表的地址(交互三:client和-ROOT-的交互)

  • Client根据.META表的地址,访问.META表,获取到数据的元数据信息(交互四:client和.METAE的交互)

  • client根据获取到的数据的元数据信息,去访问对应的HRegionServer,然后扫描所在的MemeStore和storefile来查询数据(交互五:client和数据本身的交互)

2. 寻址流程细节

image
  • -ROOT-表无论多大,都只有一个Region,存放着多条.META表的元数据信息,

  • .META表中有多个Region,存放关于实际数据的元数据

  • 一个Table对应多个Region,一个Region维护一部分的row key

3. 在Region中读取数据的具体流程

image
  • 先到memstore中寻找,注意:memstore中存放的是用户最近写入的数据,如果没有,则去Blockcache中读取数据,注意:BlockCache中存放的是用户最近读取的数据。如果没有,则去HFile中进行读取

  • HFile中获取到数据以后,现在Blockcache中进行缓存,然后再返回给客户端

  • BlockCache中用到了LRUCache算法

五、Hbase写入数据流程

image
  1. 先访问zookeeper,确定当前将要写入的数据所对应的 RegionServer 服务器和 Region。

  2. Client 向该 RegionServer 服务器发起写入数据请求,然后 RegionServer 收到请求并响应。

  3. Client 先把数据写入到 HLog,以防止数据丢失。

  4. 然后将数据写入到 Memstore。

  5. 如果 Hlog 和 Memstore 均写入成功,则这条数据写入成功。在此过程中,如果 Memstore达到16kb,会把 Memstore 中的数据写到一个队列中。

  6. 当 Storefile 越来越多,会触发 Compact 合并操作,把过多的 Storefile 合并成一个大的

尖叫提示:因为内存空间是有限的,所以说溢写过程必定伴随着大量的小文件产生。

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