NiFi FlowFile 存储库更新失败
NiFi FlowFile Repository failed to update
我正在使用 Apache NiFi 来摄取和预处理一些 CSV 文件,但是在长时间运行时,它总是失败。错误总是一样的:
FlowFile Repository failed to update
在日志中搜索,我总是看到这个错误:
2018-07-11 22:42:49,913 ERROR [Timer-Driven Process Thread-10] o.a.n.p.attributes.UpdateAttribute UpdateAttribute[id=c7f45dc9-ee12-31b0-8dee-6f1746b3c544] Failed to process session due to org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update: org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update
org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update
at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:405)
at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:336)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:28)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: **Cannot update journal file ./flowfile_repository/journals/8772495.journal because this journal has already been closed**
at org.apache.nifi.wali.LengthDelimitedJournal.checkState(LengthDelimitedJournal.java:223)
at org.apache.nifi.wali.LengthDelimitedJournal.update(LengthDelimitedJournal.java:178)
at org.apache.nifi.wali.SequentialAccessWriteAheadLog.update(SequentialAccessWriteAheadLog.java:121)
at org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:300)
at org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:257)
让我相信根本原因是 Nifi 无法更新日志文件 ./flowfile_repository/journals/8772495.journal 因为这个日志已经关闭**,如日志文件所示。
我该如何解决这个问题?
谢谢!
如果 NiFi 在写入日志文件时遇到问题,则需要检查一些事项。
您是否正在从 CSV 中读取较大(大于 64kb)的字段并试图将它们分配给属性?您可能需要考虑将 CSV 中的特定字段作为单独的流文件处理,并在以后将其与属性匹配。有关详细信息,请参阅 this mailing list discussion。
你有没有根据 best practices listed in the administration guide? I also recommend understanding each of the Flowfile repository settings 检查过 NiFi 的配置。它将允许您提出更有针对性的问题。
可能值得更新您的 JVM 设置以允许处理更大的文件。查看 this post on Hortonworks 详细介绍高性能系统的最佳实践。
为了解决这个问题,您可能需要调整一些东西。流程是否以有效的方式处理 CSV? NiFi 是否有足够的内存来处理数据?将 CSV 文件作为记录处理是否更合适?如果这个概念不熟悉,请查看 this post,它介绍了 NiFi 中的记录处理。我希望其中一些资源可以帮助您更接近解决方案。如果您有后续问题,请告诉我。
前几天我 运行 遇到了同样的问题。
当我检查 "flowfile_repository" 所在的卷上的磁盘 space 时,我看到了这个
/dev/sdc1 447G 447G 24K 100% /var/proj/data2
100% 满了。
我在 Ubuntu 系统上 运行 Nifi 2 天后遇到了同样的问题。
首先,我在Nifi文件夹下运行命令du -shr ./*
,结果发现那里有很多应用程序日志。每个日志文件是101M。我认为这是保留的默认值。
因为我现在不需要保留那么多日志,所以我更新了 Nifi /conf 文件夹中的 logback.xml 文件,将应用程序日志设置为每日滚动。
我正在使用 Apache NiFi 来摄取和预处理一些 CSV 文件,但是在长时间运行时,它总是失败。错误总是一样的:
FlowFile Repository failed to update
在日志中搜索,我总是看到这个错误:
2018-07-11 22:42:49,913 ERROR [Timer-Driven Process Thread-10] o.a.n.p.attributes.UpdateAttribute UpdateAttribute[id=c7f45dc9-ee12-31b0-8dee-6f1746b3c544] Failed to process session due to org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update: org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update
org.apache.nifi.processor.exception.ProcessException: FlowFile Repository failed to update
at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:405)
at org.apache.nifi.controller.repository.StandardProcessSession.commit(StandardProcessSession.java:336)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:28)
at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)
at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)
at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent.run(TimerDrivenSchedulingAgent.java:117)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: **Cannot update journal file ./flowfile_repository/journals/8772495.journal because this journal has already been closed**
at org.apache.nifi.wali.LengthDelimitedJournal.checkState(LengthDelimitedJournal.java:223)
at org.apache.nifi.wali.LengthDelimitedJournal.update(LengthDelimitedJournal.java:178)
at org.apache.nifi.wali.SequentialAccessWriteAheadLog.update(SequentialAccessWriteAheadLog.java:121)
at org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:300)
at org.apache.nifi.controller.repository.WriteAheadFlowFileRepository.updateRepository(WriteAheadFlowFileRepository.java:257)
让我相信根本原因是 Nifi 无法更新日志文件 ./flowfile_repository/journals/8772495.journal 因为这个日志已经关闭**,如日志文件所示。
我该如何解决这个问题?
谢谢!
如果 NiFi 在写入日志文件时遇到问题,则需要检查一些事项。
您是否正在从 CSV 中读取较大(大于 64kb)的字段并试图将它们分配给属性?您可能需要考虑将 CSV 中的特定字段作为单独的流文件处理,并在以后将其与属性匹配。有关详细信息,请参阅 this mailing list discussion。
你有没有根据 best practices listed in the administration guide? I also recommend understanding each of the Flowfile repository settings 检查过 NiFi 的配置。它将允许您提出更有针对性的问题。
可能值得更新您的 JVM 设置以允许处理更大的文件。查看 this post on Hortonworks 详细介绍高性能系统的最佳实践。
为了解决这个问题,您可能需要调整一些东西。流程是否以有效的方式处理 CSV? NiFi 是否有足够的内存来处理数据?将 CSV 文件作为记录处理是否更合适?如果这个概念不熟悉,请查看 this post,它介绍了 NiFi 中的记录处理。我希望其中一些资源可以帮助您更接近解决方案。如果您有后续问题,请告诉我。
前几天我 运行 遇到了同样的问题。 当我检查 "flowfile_repository" 所在的卷上的磁盘 space 时,我看到了这个
/dev/sdc1 447G 447G 24K 100% /var/proj/data2
100% 满了。
我在 Ubuntu 系统上 运行 Nifi 2 天后遇到了同样的问题。
首先,我在Nifi文件夹下运行命令du -shr ./*
,结果发现那里有很多应用程序日志。每个日志文件是101M。我认为这是保留的默认值。
因为我现在不需要保留那么多日志,所以我更新了 Nifi /conf 文件夹中的 logback.xml 文件,将应用程序日志设置为每日滚动。