每小时将推文保存到单个 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
设置为某个值,它将覆盖rollSize
和rollCount
值。文件轮换可能发生在文件大小达到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 参数应该是啥?的主要内容,如果未能解决你的问题,请参考以下文章