Flume 实时收集nginx的日志放到hadoop去

发布于 2021-12-03 18:20:29 字数 1989 浏览 865 评论 5

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

泛泛之交 2021-12-05 10:33:07

hdfs.rollSize这个参数你配置的都注释掉了,默认使用1024字节大小滚动一次,你这个估计是生成的文件太大了。

秋意浓 2021-12-05 10:28:25

引用来自“leh”的评论

原因很简单,你配置flume的文件切分方式同时指定了多种类型造成的,你仔细看看上面的配置,是否有按照文件大小、按照时间间隔切分等同时都配置了吧

坐在坟头思考人生 2021-12-05 09:47:59

原因很简单,你配置flume的文件切分方式同时指定了多种类型造成的,你仔细看看上面的配置,是否有按照文件大小、按照时间间隔切分等同时都配置了吧

本王不退位尔等都是臣 2021-12-05 05:28:38

引用来自“漓江”的评论

1)确认一下你的hadoop集群的配置中,datanode设置了几台。

2)查看你的备份书是多少,如果使用默认的话,那应该就是3分了。

3)flume收集到的数据是作为客户端,是向hadoop的namenode提交写操作,namenode去查看block分区跟datanode的空间资源,设定那些数据写到那些位置去,客户端拿着的这些信息后,就将原始数据分成block去写各个datanode了。datanode就是为了存储备份数据的,这样的话,最终的数据就会有多分,默认的话会有3分写的时间肯定是有差异的,主备份写完后,从备份就是同步过去的,时间上就有差异。

毁梦 2021-12-04 12:31:00

1)确认一下你的hadoop集群的配置中,datanode设置了几台。

2)查看你的备份书是多少,如果使用默认的话,那应该就是3分了。

3)flume收集到的数据是作为客户端,是向hadoop的namenode提交写操作,namenode去查看block分区跟datanode的空间资源,设定那些数据写到那些位置去,客户端拿着的这些信息后,就将原始数据分成block去写各个datanode了。datanode就是为了存储备份数据的,这样的话,最终的数据就会有多分,默认的话会有3分写的时间肯定是有差异的,主备份写完后,从备份就是同步过去的,时间上就有差异。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文