首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Flume为每行写入创建新文件

Apache Flume为每行写入创建新文件
EN

Stack Overflow用户
提问于 2014-07-11 20:04:40
回答 1查看 1.5K关注 0票数 1

我正在做一些实验来感受一下水槽。下面是我的配置文件。

代码语言:javascript
复制
agent.channels.memory-channel.type = memory

agent.sources.tail-source.type = exec
agent.sources.tail-source.command = tail -F /root/test.txt
agent.sources.tail-source.channels = memory-channel

agent.sinks.hdfs-sink.channel = memory-channel
agent.sinks.hdfs-sink.type = hdfs
agent.sinks.hdfs-sink.hdfs.path = hdfs://10.0.7.111/tflume
agent.sinks.hdfs-sink.hdfs.fileType = DataStream

agent.channels = memory-channel
agent.sources = tail-source
agent.sinks = hdfs-sink

对于使用vi命令添加到test.txt文件的每一行,查看flume日志时,它都会在HDFS /tflume目录中创建新文件。为什么会这样呢?

我希望flume附加到我现有的文件中,同时,通过查看日志,向hdfs写入数据的时间也太长了。

感谢您提前回复。

EN

回答 1

Stack Overflow用户

发布于 2015-01-14 17:16:50

这就是使用HDFS作为接收器时臭名昭著的“许多小HDFS文件”的问题。

这个问题很容易解决,只需确保至少为flume.conf中的HDFS接收器设置了属性rollSize、rollCount、rollInterval和idleTimeout。如果不设置它们,Flume默认设置为非常低的值。大多数情况下,rollSize的默认值(只有1024kb !!)将规定在1个HDFS文件中仅记录3到4条日志记录。默认值可以通过将它们的值设置为0来方便地覆盖,但如果您忘记了这一点,默认值将导致一些错误的行为。

代码语言:javascript
复制
#ALWAYS PROVIDE THESE OVERRIDES OF THE DEFAULTS !!

agent3.sinks.snk1.hdfs.rollSize = 0
agent3.sinks.snk1.hdfs.rollCount = 0
agent3.sinks.snk1.hdfs.rollInterval = 0
agent3.sinks.snk1.hdfs.idleTimeout = 0

#SET TO YOUR NEEDS

#rollCount writes to hdfs every 20 lines
agent3.sinks.snk1.hdfs.rollCount = 20
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24697289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档