在HBase中, 负责文件合并的模块叫做: 'Compaction'. 分别看了看合并的类型、触发条件、执行过程、优缺点等, 算是简单了解了一下吧.
合并类型
根据文件合并的规模, 可以分为两种....Minor 合并的时候, 将多个小文件进行合并, 那么在执行之前, 需要进行待合并文件的选择, 选取的文件一般来说不能太大, 同时也不能太多, 否则会占用过多系统资源....优缺点
文件合并也就意味着需要进行文件的读写以及生成等操作, 势必会占用系统资源及网络带宽(读写要经过 HDFS), 尤其是Major全文件合并也意味着会占用大量系统资源, 所以在合并过程中, 会对上层业务造成一定的影响...就剩一个文件了嘛
其中优化查询速度是合并文件最主要的目的了.
触发条件
文件合并虽好, 但也不能一直进行合并, 否则占用太多资源, 根本吃不住来自业务的压力. 那么什么时候会触发文件合并呢?
「1....合并流程
文件合并一般分为以下几步:
分别读取待合并文件的数据, 进行归并处理, 写到临时文件中
将临时文件挪到store的数据目录中
将合并信息存到 HLog 中, 并推送文件到 HDFS
将合并前的小文件删除