Flume 实时收集nginx的日志放到hadoop去
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#配置source1
agent1.sources.source1.type=exec
agent1.sources.source1.command=tail -F /usr/local/nginx/logs/access.log
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = true
agent1.sources.source1.deserializer.outputCharset=UTF-8
agent1.sources.source1.interceptors = i1 i2
agent1.sources.source1.interceptors.i1.regex=POST([\s\S]*)
agent1.sources.source1.interceptors.i1.type=regex_filter
agent1.sources.source1.interceptors.i2.type = timestamp
#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/usr/flume_temp/flume_tmp123
agent1.channels.channel1.dataDirs=/usr/flume_temp/flume_tmp
#配置sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://****:9000/nginx/%Y/%m/%d
agent1.sinks.sink1.hdfs.filePrefix=.log
#agent1.sinks.sink1.hdfs.path=hdfs://****:9000/nginx/%Y/%m/%d
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=600
agent1.sinks.sink1.hdfs.batchSize=1000
agent1.sinks.sink1.hdfs.rollSize=0
agent1.sinks.sink1.hdfs.rollCount=0
agent1.sinks.sink1.hdfs.rollInterval=0
agent1.sinks.sink1.hdfs.threadsPoolSize=4
agent1.sinks.sink1.hdfs.callTimeout=60000
agent1.sinks.sink1.channel=channel1
配置文件如上,
生成的hadoop文件如下:
现在的问题是hadoop生成的文件时间间隔咋不相同啊 ,14分咋有3个文件同时产生啊
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
hdfs.rollSize这个参数你配置的都注释掉了,默认使用1024字节大小滚动一次,你这个估计是生成的文件太大了。
引用来自“leh”的评论
原因很简单,你配置flume的文件切分方式同时指定了多种类型造成的,你仔细看看上面的配置,是否有按照文件大小、按照时间间隔切分等同时都配置了吧
原因很简单,你配置flume的文件切分方式同时指定了多种类型造成的,你仔细看看上面的配置,是否有按照文件大小、按照时间间隔切分等同时都配置了吧
引用来自“漓江”的评论
1)确认一下你的hadoop集群的配置中,datanode设置了几台。
2)查看你的备份书是多少,如果使用默认的话,那应该就是3分了。
3)flume收集到的数据是作为客户端,是向hadoop的namenode提交写操作,namenode去查看block分区跟datanode的空间资源,设定那些数据写到那些位置去,客户端拿着的这些信息后,就将原始数据分成block去写各个datanode了。datanode就是为了存储备份数据的,这样的话,最终的数据就会有多分,默认的话会有3分写的时间肯定是有差异的,主备份写完后,从备份就是同步过去的,时间上就有差异。
1)确认一下你的hadoop集群的配置中,datanode设置了几台。
2)查看你的备份书是多少,如果使用默认的话,那应该就是3分了。
3)flume收集到的数据是作为客户端,是向hadoop的namenode提交写操作,namenode去查看block分区跟datanode的空间资源,设定那些数据写到那些位置去,客户端拿着的这些信息后,就将原始数据分成block去写各个datanode了。datanode就是为了存储备份数据的,这样的话,最终的数据就会有多分,默认的话会有3分写的时间肯定是有差异的,主备份写完后,从备份就是同步过去的,时间上就有差异。