本文主要是介绍HBase学习七:Compaction,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、简介
Compaction是从一个Region的一个Store中选择部分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合并小文件的同时会将落在远程DataNode上的数据读取出来重
这篇关于HBase学习七:Compaction的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!