分享

flume1.5.0关于hdfs中存储文件问题

由客户端采集的日志都准备存储到hdfs中,关于hdfs存储的方式,文档中这么说的
  1. hdfs.rollInterval        30        Number of seconds to wait before rolling current file (0 = never roll based on time interval)
  2. hdfs.rollSize        1024        File size to trigger roll, in bytes (0: never roll based on file size)
  3. hdfs.rollCount        10        Number of events written to file before it rolled (0 = never roll based on number of events)
复制代码
但是,我无论咋配置,在hdfs目录下都是一些零碎的小文件,hdfs不能把这些日志写在一个文件中然后滚动吗?
我这样配置的
  1. agent.sinks.hdfs-sink1.hdfs.rooInterval=0
  2. agent.sinks.hdfs-sink1.hdfs.rollCount=0
  3. agent.sinks.hdfs-sink1.hdfs.rollSize=1048576
复制代码



已有(8)人评论

跳转到指定楼层
sstutu 发表于 2014-7-24 21:08:48
没有很明白你的意思。
flume传递的是文件。如果监控目录里是小文件,那传递的也是小文件。无论你是怎样的配置方式,这个都是不变的。
回复

使用道具 举报

shadowhtx 发表于 2014-7-24 21:39:30
sstutu 发表于 2014-7-24 21:08
没有很明白你的意思。
flume传递的是文件。如果监控目录里是小文件,那传递的也是小文件。无论你是怎样的 ...

比如说我在客户端追加两条日志,两条日志间隔1s就会在hdfs上生成两个文件,每个文件保存一条日志。
回复

使用道具 举报

sstutu 发表于 2014-7-24 21:50:20
shadowhtx 发表于 2014-7-24 21:39
比如说我在客户端追加两条日志,两条日志间隔1s就会在hdfs上生成两个文件,每个文件保存一条日志。
这样的方式不太好 吧,你不如定时往监控目录里传文件。如果日志文件作为监控目录的话,这样很容易出问题
回复

使用道具 举报

shadowhtx 发表于 2014-7-24 22:30:02
sstutu 发表于 2014-7-24 21:50
这样的方式不太好 吧,你不如定时往监控目录里传文件。如果日志文件作为监控目录的话,这样很容易出问题

可是需求是实时采集日志。hdfs有方法配置吗?
回复

使用道具 举报

sstutu 发表于 2014-7-24 22:39:50
shadowhtx 发表于 2014-7-24 22:30
可是需求是实时采集日志。hdfs有方法配置吗?

有三种方法:
1.要么到hdfs上合并
2.要么开发一个插件
3.实时其实都是相对的,你可以设置时间间隔短一些。
回复

使用道具 举报

shadowhtx 发表于 2014-7-25 17:47:25
sstutu 发表于 2014-7-24 22:39
有三种方法:
1.要么到hdfs上合并
2.要么开发一个插件

感谢你的回答,我想还是自己写个hdfssink吧。
回复

使用道具 举报

chinaboy2005 发表于 2014-11-12 16:52:53
你是如何解决的啊
回复

使用道具 举报

shadowhtx 发表于 2014-11-13 16:37:23

自定义sink,写入hdfs。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条