Hbase Compaction 过程

1. minor Compaction

    HBase 会自动选择一些较小的 HFile,并将它们重写成更少且更大的 Hfiles,这个过程 称为 Minor Compaction。Minor Compaction 通过将较小的文件重写为较少但较大的文件来减 少存储文件的数量,执行合并排序。

    Minor 操作只用来做部分文件的合并操作,不做任何删除数据、多版本数据的清理工作。 Minor 通常会把数个小的相邻的 StoreFile 合并成一个大的 StoreFile,Minor 不会删除标识为删除的数据和过期的数据,只做文件的合并,不做其他事情。

 

2. Major Compaction

    Major compaction 将 Region 的每一 Store 的所有的 StoreFile 合并,并重写到一个 StoreFile 中,也就是对 Store 的所有数据进行重写,即每个列族对应这样的一个 StoreFile, 并在此过程中,删除已删除或过期的 Cell(TTL 设置),这样提升了读取性能。由于 Major compaction 重写了所有 StoreFile 文件,因此在此过程中可能会发生大量磁盘 I/O 和网络流量, 有较大的性能消耗,这被称为写入放大。

    Major compaction 执行计划可以自动运行。由于写入放大,通常计划在周末或晚上进行 Major compaction,由于服务器故障或负载平衡,Major compaction 还会使任何远程数据文件 成为本地服务器的本地数据文件。

 

3. Compaction 综述

    一般情况下都是做 Minor 合并,Major 不少集群都是禁止,然后在集群负载较小时,进 行手动 Major 合并。在数据立方公司,也是配置了一个datacube.hregion.majorcompa ction0,这是配置 Major 的合并周期(默认为 7 天),如果配置成 0 即关闭 Major 合并。需要注意,既然 Major 合并是把所有 HFile 都合并成一个文件,可想对 集群负载不可小觑。

Minor 则只会选择数个 HFile 文件 compact 为一个 HFile,Minor 的过程一般较快,而且 IO 相对较低。在日常任务时间,都会禁止 Mjaor 操作,只在空闲的时段定时执行。

你可能感兴趣的:(#,HBase)