0%

HBase写数据过程

HBase写数据过程

  • Client向HregionServer发送写请求
  • HregionServer将数据写到HLog(write ahead log,WAL),这一步是为了数据的持久化和恢复(可以理解为mysql的binlog)
  • HregionServer将数据写到内存(MemStore)
  • 反馈Client写成功

为了提升性能,写完数据之后由于数据是写在内存的,需要将内存中的数据flush到硬盘

数据flush的过程如下

  • 当MemStore数据达到阈值(默认是128M),将数据刷到硬盘storefile,将内存中的数据删除,同时删除HLog中的历史数据
  • 并将数据存储到HDFS中
  • 在HLog中做标记点

为了减少小文件数量,会进行小文件的合并操作

数据合并过程如下

  • 当数据块达到4块(storefile数量达到一定阈值后),Hmaster触发合并操作,Region将数据块加载到本地,进行合并
  • 当合并的数据超过256M(storefile的大小达到一定阈值后),进行拆分,将拆分后的Region分配给不同的HregionServer管理
  • 当HregionServer宕机后,将HregionServer上的hlog拆分,然后分配给不同的HregionServer加载,修改.META.
  • HLog会同步到HDFS

欢迎关注我的其它发布渠道