太多的小文件hdfsFlume

eeq64g8w  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(335)
agent.sinks=hpd
agent.sinks.hpd.type=hdfs
agent.sinks.hpd.channel=memoryChannel
agent.sinks.hpd.hdfs.path=hdfs://master:9000/user/hduser/gde
agent.sinks.hpd.hdfs.fileType=DataStream
agent.sinks.hpd.hdfs.writeFormat=Text
agent.sinks.hpd.hdfs.rollSize=0
agent.sinks.hpd.hdfs.batchSize=1000
agent.sinks.hpd.hdfs.fileSuffix=.i  
agent.sinks.hpd.hdfs.rollCount=1000
agent.sinks.hpd.hdfs.rollInterval=0

我正在尝试使用hdfs sink将事件写入hdfs。并尝试了大小,计数和时间基地滚动,但没有一个是预期的工作。它在hdfs中生成了太多的小文件,例如:

-rw-r--r--   2 hduser supergroup      11617 2016-03-05 19:37 hdfs://master:9000/user/hduser/gde/FlumeData.1457186832879.i
-rw-r--r--   2 hduser supergroup       1381 2016-03-05 19:37 hdfs://master:9000/user/hduser/gde/FlumeData.1457186832880.i
-rw-r--r--   2 hduser supergroup        553 2016-03-05 19:37 hdfs://master:9000/user/hduser/gde/FlumeData.1457186832881.i
-rw-r--r--   2 hduser supergroup       2212 2016-03-05 19:37 hdfs://master:9000/user/hduser/gde/FlumeData.1457186832882.i
-rw-r--r--   2 hduser supergroup       1379 2016-03-05 19:37 hdfs://master:9000/user/hduser/gde/FlumeData.1457186832883.i
-rw-r--r--   2 hduser supergroup       2762 2016-03-05 19:37 hdfs://master:9000/user/hduser/gde/FlumeData.1457186832884.i.tmp

请协助解决给定的问题。我用的是Flume1.6.0
~谢谢

n53p2ov0

n53p2ov01#

我提供的配置都是正确的。这种行为背后的原因是hdfs。我有两个数据节点,其中一个坏了。因此,文件没有达到所需的最低复制要求。在Flume日志中,还可以看到以下警告消息:
“检测到复制中的块。正在旋转文件。“
要解决这个问题,你可以选择下面的任何一个solution:-
启动数据节点以实现所需的块复制,或
设置属性 hdfs.minBlockReplicas 相应地。
~谢谢

ewm0tg9j

ewm0tg9j2#

您现在每1000个项目滚动一次文件。您可以尝试下面提到的两种方法之一。
尝试增加 hdfs.rollCount 对于更高的值,该值决定每个滚动文件中包含的事件数。
删除 hdfs.rollCount 并设置 hdfs.rollInterval 要滚动文件的间隔。说 hdfs.rollInterval =600,每10分钟滚动一次文件。
有关更多信息,请参阅flume文档

相关问题