HBase中的StoreFile什么时间合并__学习笔记


前言:图片是HBase架构图,建议结合架构图,理解StoreFile 的合并

概述

HBase 根据合并规模将 Compaction 分为了两类:MinorCompaction 和 MajorCompaction。

Minor Compaction:会将临近的若干个较小的 HFile 合并成一个较大的 HFile,但 不会清理过期和删除的数据。

Major Compaction:会将一个 Store 下的所有的 HFile 合并成一个大 HFile,并且 会清理掉过期和删除的数据。
另外,一般情况下,Major Compaction时间会持续比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响。因此线上业务都会将关闭自动触发Major Compaction功能,改为手动在业务低峰期触发。默认Major Compaction的合并周期是7天

一、合并storefile的原因

由于memstore每次刷写都会生成一个新的HFile,且同一个字段的不同版本(timestamp)和不同类型(Put/Delete)有可能会分布在不同的HFile中,因此查询时需要遍历所有的HFile。为了减少 HFile 的个数,以及清理掉过期和删除的数据,会进行 StoreFile Compaction。
Hadoop不擅长处理小文件,文件越大性能越好。

二、什么时候合并

1、一个列簇中storefile大于等于3个的时候就会自动合并(Major Compaction)
2、7天的时候会自动合并

但是在生产中,建议把自动合并关掉。因为Major Compaction时间会持续比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响


3、HBase shell 手动合并某个文件
compact '表名'

参考文章:HBase篇(6)-HFile合并过程详解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章