HBASE写流程

HBASE写流程,第1张

HBASE写流程

目录
  • region
  • meta表
  • MemStore
  • store
  • HFile
  • Hbase写文件流程
  • 读流程

region

当Region服务器收到写请求的时候,Region服务器会将请求转至相应的Region。

  1. 数据写入到Memstore
  2. Memstore到达一定的阀值的时候,完成对数据的排序
  3. 按照顺序将Memstore中的数据持久化到HFile中
meta表

为了定位每个Region所在的位置,就可以构建一张映射表,映射表的每行包含两项内容,一个是Region标识,一个是RegionServer标识等信息,这行就表示Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。

MemStore

当Region服务器收到写请求的时候,Region服务器会将请求转至相应的Region。
数据首先写入到Memstore,然后当Memstore到达一定的阀值的时候,完成对数据的排序,然后按照顺序将Memstore中的数据持久化到HFile中。
Memstore存储了最近插入的数据,检索近期插入的数据时,速度相当快,检索时间久的磁盘数据时,速度就会慢些。

store

Store是存储数据的核心,存储的是同一个列族下的数据,每个Store包含有一块MemStore和0个或多个StoreFile。StoreFile是Hbase中最小的数据存储单元。

用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile), 当StoreFile文件数量增长到一定阈值,会触发Compaction合并 *** 作。

HFile

HFile里面的每个键值对就是一个简单的byte数组。但是这个byte数组里面包含了很多项,并且有固定的结构。

Hbase写文件流程

客户端首先访问zookeeper,从meta表得到写入数据对应的region信息和相应的region服务器。
找到相应的region服务器,把数据分别写到HLog和MemStore上一份。
MemStore达到阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以从HLog上恢复)。
当StoreFile文件达到一定的数量后,会触发Compact合并 *** 作,合并为一个StoreFile
当Storefile大小超过一定阈值后,会把当前的Storefile分割为两个(Split分裂)

读流程

客户端先访问zookeeper,从meta表读取Region的信息对应的服务器。
客户端向对应Region服务器发送读取数据的请求,Region接收请求后,先从MemStore找数据,如果没有,再到StoreFile上读取,然后将数据返回给客户端。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5678919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存