HBase学习七:Compaction

1、简介

Compaction是从一个Region的一个Store中选择部分HFile文件进行合并。其目的为了减少 HFile 的个数跟清理掉过期和删除的数据。

合并原理是,先从这些待合并的数据文件中依次读出KeyValue,再由小到大排序后写入一个新的文件。之后,这个新生成的文件就会取代之前已合并的所有文件对外提供服务。

HBase根据合并规模将Compaction分为两类:Minor Compaction和Major Compaction。

  • Minor Compaction是指选取部分小的、相邻的HFile,将它们合并成一个更大的HFile。
  • Major Compaction是指将一个Store中所有的HFile合并成一个HFile,这个过程还会完全清理三类无意义数据:被删除的数据、TTL过期数据、版本号超过设定版本号的数据。一般情况下,Major Compaction持续时间会比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响。因此线上部分数据量较大的业务通常推荐关闭自动触发Major Compaction功能,改为在业务低峰期手动触发(或设置策略自动在低峰期触发)。

2、作用

  • 合并小文件,减少文件数,稳定随机读延迟。
  • 提高数据的本地化率。
  • 清除无效数据,减少数据存储量

3、优缺点

优点:

  • Compaction的另一个重要作用是提高数据的本地化率。本地化率越高,在HDFS上访问数据时延迟就越小;相反,本地化率越低,访问数据就可能大概率需要通过网络访问,延迟必然会比较大。Compaction合

你可能感兴趣的:(中间件,hbase,学习,数据库)