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 需要时间将文件上传到 HDFS

flume的原理及介绍 线上数据-》flume-》kafka-;hdfs/hadoop

flume出现org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme “hdfs“

通过 Apache Flume 将日志文件从本地文件系统移动到 HDFS 时出错

Flume采集Nginx日志到HDFS

flume+kafka+hdfs详解