Apache Flume 每小时推出 HDFS 文件
Posted
技术标签:
【中文标题】Apache Flume 每小时推出 HDFS 文件【英文标题】:Apache flume rolling out the HDFS files on hourly basis 【发布时间】:2015-08-24 17:46:18 【问题描述】:我是 Flume 的新手,我正在探索使用 Flume 每小时翻转我的 HDFS 文件的选项。
在我的项目中,Apache Flume 将从 Rabbit MQ 读取消息并将其写入 HDFS。
hdfs.rollInterval
- 它根据文件打开的时间间隔关闭文件。
只有在文件关闭后 Flume 读取消息时才会创建新文件。这个选项不能解决我们的问题。
hdfs.path = /%y/%m/%d/%H
- 此选项运行良好,它每小时创建文件夹。但问题是只有当新消息到来时才会创建新文件夹。
例如:消息将在 11.59 之前到来,文件将处于打开状态。然后消息停止发送,直到 12.30。但是,该文件仍将处于打开状态。 12.30 后新消息来了。然后由于 hdfs.path 配置,之前的文件将被关闭,新文件将在新文件夹中创建。
之前的文件在关闭之前不能用于计算。
我们需要一个选项来完美地每小时关闭打开的文件。我想知道水槽中是否有任何选项可以做到这一点。
【问题讨论】:
【参考方案1】:hdfs.rollInterval 被描述为
滚动当前文件前等待的秒数
所以这一行应该导致文件一次分配一个小时
hdfs.rollInterval = 3600
而且我还会忽略文件大小和事件计数,所以也添加这些
hdfs.rollSize = 0
hdfs.rollCount = 0
【讨论】:
【参考方案2】:hdfs.idleTimeout
关闭非活动文件的超时时间(0 = 禁用自动关闭空闲文件)
例如,您可以将此属性设置为 180。文件将被打开
【讨论】:
以上是关于Apache Flume 每小时推出 HDFS 文件的主要内容,如果未能解决你的问题,请参考以下文章
flume的原理及介绍 线上数据-》flume-》kafka-;hdfs/hadoop
flume出现org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme “hdfs“