1.解压flume到指定文件夹
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/apps
2.启动HDFS集群
start-dfs.sh
3.写脚本模拟日志生产
while true ; do echo $RANDOM >> a.log ; sleep 0.01 ; done //循环产生随机数写入到a.log中
4.配置flume中agent的相关配置信息
a1.sources = r1 --source的名字
a1.sinks = k1 --sink的名字
a1.channels = c1 --channel的名字 全都可以配置多个,用空格隔开
a1.sources.r1.channels = c1 --配置source将文件传到哪个channel,一个source可以连接多个channel
a1.sources.r1.type = TAILDIR --配置source读取数据的方式
a1.sources.r1.filegroups = g1 --配置要监控的一批数据
a1.sources.r1.filegroups.g1 = /logdata/a.* --使用正则,指定监控的数据格式
a1.sources.r1.headers.g1.x = y --配置source的header,看具体需求指定
a1.sources.r1.fileHeader = true --配置文件的header
a1.sources.r1.fileHeaderKey = filepath --指定k,v
a1.sources.r1.interceptors = i1 --配置拦截器的名字为i1
a1.sources.r1.interceptors.i1.type = timestamp --配置具体的拦截器类型
a1.sources.r1.interceptors.i1.headerName = timestamp --配置拦截器中header的name
a1.channels.c1.type = memory --配置channel的类型为 Memory Channel
a1.channels.c1.capacity = 1000 --配置channel中event的最大容量为 1000
a1.channels.c1.transactionCapacity = 1000 --配置事务控制中每次读取或写出的最大数据容量
a1.sinks.k1.channel = c1 --配置sink从哪个channel获取evnet,一个sink只能连接一个channel
a1.sinks.k1.type = hdfs --配置数据写入到hdfs中
a1.sinks.k1.hdfs.path = hdfs://linux01:9000/flumedata/%Y-%m-%d/%H --配置写入路径,并且指定数据命名规则
a1.sinks.k1.hdfs.filePrefix = doitedu-log- --指定文件名前缀
a1.sinks.k1.hdfs.fileSuffix = .log --指定文件名后缀
a1.sinks.k1.hdfs.rollSize = 268435456 --指定数据达到256M写出一次
a1.sinks.k1.hdfs.rollInterval = 120 --指定120秒写出一次
a1.sinks.k1.hdfs.rollCount = 0 --指定为0使得该参数失效
a1.sinks.k1.hdfs.batchSize = 1000 --指定每批数据写出大小
a1.sinks.k1.hdfs.fileType = CompressedStream --指定写出的文件类型
a1.sinks.k1.hdfs.codeC = snappy --指定写出文件的压缩方式
a1.sinks.k1.hdfs.useLocalTimeStamp = false --不使用本机的时间戳
注意:
- 上面许多配置都是根据实际生产情况中的日志采集情况灵活调整的,并不是所有都需要配置的
- TAILDIR是实际生产中最常用的source方式
- 在hdfs中flume安装目录下新建agentconf文件夹,将上述配置数据写到taildir-m-hdfs.conf中,放到agentconf
- logdata是在hfds的 / 目录下新建的文件夹,用于存放测试数据
5.启动flume
#移动到flume安装目录下
bin/flume-ng agent -c ./conf -f ./agentconf/taildir-m-hdfs.conf -n a1
参数解读:
- -c : flume自带的配置文件夹
- -f : 自己创建的agent配置文件路径
- -n : agent的name
为了方便测试集群是否能正常启动,并且有错误时可得到错误日志信息,可添加-D参数,变为如下形式
bin/flume-ng agent -c ./conf -f ./agentconf/taildir-m-hdfs.conf -n a1 -Dflume.root.logger=DEBUG,console
6.到HDFS集群中查看,是否产生数据文件
产生了对应小时的文件夹,并且其中存在采集的数据