《HBase权威指南》读书笔记 第八章:架构,Compaction合并

compaction合并操作

compaction操作将小文件合并成大文件,加快查询速度,减少文件数量,减少资源占用。compaction分为两种:

  • minor compaction:将一个region中一部分小文件合并到一个新的文件中
  • major compaction:将一个region中所有文件都合并到一个文件中。在这个过程中剔除已删除的数据、剔除多于的多版本数据。

HBase会在以下几种情况下检查是否进行合并:

  • 当memstore刷写到磁盘时
  • 当检查线程定时检查时。检查线程的频率由参数hbase.server.thread.wakefrequencyhbase.server.thread.wakefrequency.multiplier控制。
  • shell中执行compaction或者major_compaction命令时

当检查到需要合并时,HBase根据以下配置项判断是否需要进行major合并:

  • hbase.hregion.majorcompaction:默认是24小时
  • hbase.hregion.majorcompaction.jitter:抖动,默认是20%

以上两个参数意味着major合并周期为随机取19.2小时~28.8小时之间的数值。当major合并周期还未到达时,执行minor合并。

minor合并根据以下参数选择要合并的文件,并判断是否达到合并阈值:

  • hbase.hstore.compaction.min:最少合并的文件数量,默认是3,表示最少合并3个文件
  • hbase.hstore.compaction.max:最多合并的文件数量,默认是10,表示最多合并10个文件。如果一次合并的文件过多,可能会导致minor合并速度变慢
  • hbase.hstore.compaction.min.size:需要合并的文件大小总和如果达不到这个值就不进行合并。默认是memstore刷写阈值。
  • hbase.hstore.compaction.max.size:文件大小超过这个值的将会被排除在外。默认是Long.MAX_VALUE表示没有限制。

你可能感兴趣的:(读书笔记)