合并文件时nifi-1.0.0会阻塞

时间:2016-11-12 00:14:49

标签: apache-nifi

我有一个流程,我在其中处理csv文件(最大文件大小~700 mB)。 我将这些文件拆分为1行的流文件,然后我正在进行一些处理,最后我使用[Extended] MergeContent处理器作为同步机制。 问题是,如果我处理每个csv文件,当它们在MergeContent的队列中时,它将阻止nifi实例。

当我有超过150万个文件时,它会阻止。

Nifi正在服务器上运行(32核,~200 GB的RAM)。发生Nifi堆大小64或128同样的问题。

知道为什么会这样吗?

如果我处理5个小的csv文件,没问题,处理器就可以了。

[Extended] MergeContent是一个继承MergeContent的处理器,它等待所有文件捆绑,然后将信号发送到下一个处理器。它不会组成整个文件。 例如,如果我的CSV文件由1 000行的1 000 000个流文件组成,则[Extended] MergeContent将仅发送1 000 000个流文件中的1个,作为下一个处理器的信号。

1 个答案:

答案 0 :(得分:0)

我一直在处理类似的情况,并且努力尝试使用那么多文件在粒度级别上使用NiFi。

在我的特殊情况下,这对垃圾收集器施加了太大的压力,无论我有多少RAM,或者我花了多少时间进行GC调整,G1都会定期触发完整的GC。您可以查看这是否是垃圾收集器相关问题,查看右上角的摘要部分,然后系统诊断程序显示gc统计信息。

我建议您一起重新设计流程和批处理行,这样您最终会得到更少的流程文件。另一个选择是在队列中施加背压时随时限制流中的流文件数,但由于您使用EMC处理器作为同步机制,我不知道是否可能。

希望这有帮助