每小时将推文保存到单个 Flume 数据文件的 flume.conf 参数应该是啥?

Posted

技术标签:

【中文标题】每小时将推文保存到单个 Flume 数据文件的 flume.conf 参数应该是啥?【英文标题】:What should be flume.conf parametres for save tweets to single FlumeData file per hour?每小时将推文保存到单个 Flume 数据文件的 flume.conf 参数应该是什么? 【发布时间】:2016-06-29 11:52:49 【问题描述】:

我们正在以 /user/flume/2016/06/28/13/FlumeData... 之类的目录顺序保存推文。但是每小时它会创建超过 100 个 FlumeData 文件。我已经更改了 TwitterAgent.sinks.HDFS.hdfs.rollSize = 52428800 (50 mb) 同样的事情发生了再次。之后我也尝试更改 rollcount 参数,但没有奏效。如何设置参数以每小时获取一个 FlumeData 文件。

【问题讨论】:

【参考方案1】:

rollInterval 呢?你把它设置为零。如果是,那么问题可能是其他问题。如果rollInterval 设置为某个值,它将覆盖rollSizerollCount 值。文件轮换可能发生在文件大小达到rollSize 值之前。另外,检查您设置的 HDFS 块大小。如果将其设置为,即使值太小也可能导致文件滚动。

试试这个 -

    TwitterAgent.sinks.HDFS.channel = MemChannel
    TwitterAgent.sinks.HDFS.type = hdfs
    TwitterAgent.sinks.HDFS.hdfs.path = hdfs://hpc01:8020/user/flume/tweets/%Y/%m/%d/%H
    TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
    TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text

    TwitterAgent.sinks.HDFS.hdfs.batchSize = 100


    TwitterAgent.sinks.HDFS.hdfs.rollSize = 0

    TwitterAgent.sinks.HDFS.hdfs.rollCount = 0

    TwitterAgent.sinks.HDFS.hdfs.rollInterval = 3600
    TwitterAgent.channels.MemChannel.type = memory
    TwitterAgent.channels.MemChannel.capacity = 1000

    TwitterAgent.channels.MemChannel.transactionCapacity = 100

【讨论】:

rollInterval 未设置,但我认为默认值已经为零,我们的 hdfs 块大小为 128mb。 你能把flume配置文件贴在这里吗?最初,即使我也遇到了同样的问题。由于内存错误(由于通道容量无法正常工作),我无法每小时创建 1 个文件,但我将其降低到每小时 4 到 5 个文件。每个文件大小最大为 8MB。我将通道容量设置为 1000,事务容量设置为 100。然后将文件大小设置为 8000000,并将剩余滚动参数设置为零。重要的是,批量大小(我将其设为 100)会根据通道容量进行调整。试试看,让我知道你的结果如何。 您已将滚动计数设为 10,请将其更改为零。滚动计数导致了数百个文件。将批量大小增加到 100 或更多。将滚动间隔设为 1 小时(3600 秒),看看会发生什么。 试试我在回答中添加的配置。 您的意思是它不起作用 - 它仍在创建大量小文件?【参考方案2】:

我按照@vkgade 的建议设置 rollInterval=3600 rollcount=0 和 batchSize=100 flume.conf 参数解决了这个问题

【讨论】:

【参考方案3】:
TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://hpc01:8020/user/flume/tweets/%Y/%m/%d/%H
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text

TwitterAgent.sinks.HDFS.hdfs.batchSize = 1


TwitterAgent.sinks.HDFS.hdfs.rollSize = 0

TwitterAgent.sinks.HDFS.hdfs.rollCount = 10

TwitterAgent.sinks.HDFS.hdfs.rollInterval = 0
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000

TwitterAgent.channels.MemChannel.transactionCapacity = 1000

【讨论】:

嘿,在这里查看您的答案,rollInterval 写为rollIntInterval。这是不正确的。

以上是关于每小时将推文保存到单个 Flume 数据文件的 flume.conf 参数应该是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何将推文发送到我的 Twitter 帐户?

使用 tweepy 和 discord.py 将推文发布到特定频道

如何将推特链接转换为嵌入式推文?

Apache Flume 每小时推出 HDFS 文件

将推特数据导入熊猫时跳过属性错误

Flume 推文的未知文件格式