大数据进阶: HBase存储架构原理与流程详解(一)
作者头像
  • 夏问
  • 2020-08-25 19:41:56 7

大数据进阶:HBase存储架构原理与流程详解

1 RegionServer 架构

StoreFile

StoreFile是实际数据的物理文件,以HFile的形式存储在HDFS上。每个Store可能包含一个或多个StoreFile(HFile),并且每个StoreFile中的数据都是有序的。

MemStore

MemStore是写缓存。由于HFile要求数据必须有序,因此数据首先存储在MemStore中,待满足一定的刷写条件后,再写入HFile。每次刷写都会创建一个新的HFile。

WAL

为了防止数据因保存在内存中而丢失,数据会先被写入一个名为Write-Ahead Log(WAL)的日志文件,然后再写入MemStore。这样,在系统出现故障时,可以通过日志文件恢复数据。

BlockCache

BlockCache是读缓存。查询出的数据会被缓存在这里,以便下次查询时能够更快地获取。

写流程

  1. 客户端首先访问ZooKeeper,以确定hbase:meta表的位置。
  2. 访问对应的Region Server,查询hbase:meta表,根据请求的namespace:table/rowkey,找到目标数据所在的Region Server及其Region,并将相关信息缓存在客户端的元数据缓存中,以便后续访问。
  3. 与目标Region Server通信。
  4. 将数据按顺序写入WAL。
  5. 将数据写入对应的MemStore,并进行排序。
  6. 向客户端发送确认信息。
  7. 当MemStore达到刷写条件时,将数据写入HFile。

MemStore 刷写条件

  1. 当某个MemStore的大小达到默认值128MB时,其所在Region的所有MemStore都会被刷写。

    • 如果MemStore的大小达到默认值128MB乘以4倍的限制,将不再允许向该MemStore写入数据。
  2. 当Region Server中所有MemStore的总大小达到Java堆大小的40%乘以0.95时,Region会按照MemStore的大小从大到小的顺序依次刷写,直到总大小低于设定值。

    • 如果Region Server中所有MemStore的总大小达到Java堆大小的40%,将不再允许向任何MemStore写入数据。
  3. 到达自动刷写的时间间隔(默认为1小时),也会触发MemStore刷写。

  4. 当WAL文件的数量超过32个时,Region会按时间顺序依次刷写,直到WAL文件数量减少到32个以下。


希望这些信息对你有所帮助!如果你有任何其他问题或需要进一步的信息,请随时联系我。

    本文来源:图灵汇
责任编辑: : 夏问
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
进阶详解架构流程原理存储数据HBase
    下一篇