Sources
①、exec:tail命令,监控一个文件
②、spooling Dir:监控目录中的某个文件,不支持正则匹配
③、tailDir:监控目录中的所有正则匹配文件
个人操作总结:
exec:仅仅支持监控一个文件,类似于linux命令的tail -f
spoolingDir:支持的范围有限,类似于hdfs的hdfs -put….,有致命的缺陷
其1:一个文件收集完之后,默认就把该文件的后缀名称给改变了,后续无法操作
其2:就是不支持正则匹配
其3:如果Agent挂掉后,又会从头读取已经读过的数据,很坑。
tailDir:是在apache-flume的1.7.0版本后出现的,但是有bug,不能支持增量导入方式,需要自己进行源码重新编译,但是cdh-flume的1.6.0版本修复了此bug,所以要使用cdh版本的,他支持两方面的操作,第一方面的业务是监控目录下的所有文件,我们公司的部分业务用户订单行为,用户行程行为、gps信息,就是监控目录下以complete结束的文件,支持正则匹配第二个监控目录下子目录(不过这方面业务我还没接触过)。
支持断点续传功能,如果Agent挂掉后,他配置的还有postion存放文件数据偏移量,可以从postion记录的位置读取,具有很强的健壮性。
补充:
fileHeader是个布尔值,可配置为true或者false,表示在flume读取数据之后,是否在封装出来的event中将文件名添加到event的header中。
fileHeaderKey表示,如果event中有了header(当fileHeader配置为true)时,header中存储文件名的
Channel
MemoryChannel
作用:所有的events被保存在内存中。
优点:高吞吐。
缺点:容量有限并且Agent死掉时会丢失内存中的数据。
配置介绍:
capacity:设置内存中允许存储的大小(event个数为100)
transactionCapacity:每次连接传输允许的大小,默认是capacity/10-100
FileChannel
作用:所有的events被保存在文件中。
优点:容量较大且死掉时数据可恢复。
缺点:速度较慢。
配置介绍:
在linux中,datadir默认是最大只保留两个文件(3.2G),每个文件最大1.6G,log-7.meta是元数据,log-,代表1,2,3,4等,如果之前的文件名称是log-1,log-2,如果来了log-3,那么log-1就删除了
Sink
hdfs:
文件回滚:
时间:hdfs.rollInterval
禁用:0
大小:hdfs.rollSize
选用文件大小回滚k*128M+{2,3,4},131000000,132000000
个数:hdfs.rollCount
禁用:0
设置时间分区:
%Y%m%da1.sinks.k1.hdfs.path=/flume/events/%y-%m-%d/%H%M/%S
在设置的文件开头后边的时间戳
hdfs.useLocalTimeStamp=true
如何设置文件开头:
hdfs.filePrefix=*
线程等待时间:
hdfs.idleTimeout
设置为0,会一直进行数据收集