在HBase中, 负责文件合并的模块叫做: 'Compaction'. 分别看了看合并的类型、触发条件、执行过程、优缺点等, 算是简单了解了一下吧.
合并类型
根据文件合并的规模, 可以分为两种....Minor 合并的时候, 将多个小文件进行合并, 那么在执行之前, 需要进行待合并文件的选择, 选取的文件一般来说不能太大, 同时也不能太多, 否则会占用过多系统资源....这里多说一句, 在每个store中, 并不是所有数据都存在HFile中, 其中部分数据在内存中, 还没有进行落盘, 所以每个store由两部分组成: 1. 内存中的有序结构 2....就剩一个文件了嘛
其中优化查询速度是合并文件最主要的目的了.
触发条件
文件合并虽好, 但也不能一直进行合并, 否则占用太多资源, 根本吃不住来自业务的压力. 那么什么时候会触发文件合并呢?
「1....合并流程
文件合并一般分为以下几步:
分别读取待合并文件的数据, 进行归并处理, 写到临时文件中
将临时文件挪到store的数据目录中
将合并信息存到 HLog 中, 并推送文件到 HDFS
将合并前的小文件删除