flume 1.8 file_roll相关参数配置
把 Event 存储到本地文件系统。
属性 |
默认值 |
解释 |
---|---|---|
channel |
– |
与 Sink 绑定的 channel |
type |
– |
组件类型,这个是: |
sink.directory |
– |
Event 将要保存的目录 |
sink.pathManager |
DEFAULT |
配置使用哪个路径管理器,这个管理器的作用是按照规则生成新的存储文件名称,可选值有: default规则:prefix+当前毫秒值+“-”+文件序号+“.”+extension; rolltime规则:prefix+yyyyMMddHHmmss+“-”+文件序号+“.”+extension; 注:prefix 和 extension 如果没有配置则不会附带 |
sink.pathManager.extension |
– |
如果上面的 pathManager 使用默认的话,可以用这个属性配置存储文件的扩展名 |
sink.pathManager.prefix |
– |
如果上面的 pathManager 使用默认的话,可以用这个属性配置存储文件的文件名的固定前缀 |
sink.rollInterval |
30 |
表示每隔30秒创建一个新文件进行存储。如果设置为0,表示所有 Event 都会写到一个文件中。 |
sink.serializer |
TEXT |
配置 Event 序列化器,可选值有: |
batchSize |
100 |
每次请求批处理的 Event 数 |
配置范例:
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = file_roll
a1.sinks.k1.channel = c1
a1.sinks.k1.sink.directory = /var/log/flume
二次开发
因项目要求:
1、根据时间动态生成日志目录:/logs/yyyyMM/yyyyMMdd/HH
2、文件名随时间动态生成:a_yyyyMMddHH_LOG-11001-UserStatusChange_00_001.dat ——yyyyMMddHH为年月日小时
现有配置无法满足要求,所以对RollingFileSink进行二次开发,代码如下:
package com.demo.flume.sink;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.flume.*;
import org.apache.flume.conf.Configurable;
import org.apache.flume.formatter.output.PathManager;
import org.apache.flume.formatter.output.PathManagerFactory;
import org.apache.flume.instrumentation.SinkC