繁体   English   中英

为什么 nifi 会丢失流文件内容?

why nifi is loosing flowfile content?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正面临一个非常奇怪的问题。

此错误在“EvaluateJsonPath 1.6.0”处理器中随机出现。 我的工作流程中有 3 个该处理器的实例。 错误是随机出现的,不是在同一个地方出现的。

有时流程运行良好(很少)。 这个错误足够频繁,但错误的位置是随机的。

流程是这样的 => 触发 http url -> eval 结果 Json -> 获取更多 URL -> 调用那些 http url -> 执行 eval -> 等待 -> 合并所有结果 -> 写入 fs -> 结束

等待部分代码等待大约 30 分钟。

每个关系都有足够的缓冲区(5 GB,100000 ff)。 而且我看不到任何背压。

系统有足够的剩余内存。 jvm 也在 28gb 堆上运行。

我在 v 1.6.0

可能是什么原因? 是一些后台进程,清理文件,在进程释放它之前?

有没有可能,我可能已经配置了一些优化,这使得 nifi 清理内容文件夹? 它不像,内容文件夹是空的,它仍然有旧文件,所以不能这样。

我真的很困惑。

我可以看到以下堆栈跟踪

`

2018-11-14 12:04:04,120 ERROR [Timer-Driven Process Thread-2] o.a.n.p.standard.EvaluateJsonPath EvaluateJsonPath[id=d9d338ca-5396-3f8c-e134-753aacda1ca6] EvaluateJsonPath[id=d9d338ca-5396-3f8c-e134-753aacda1ca6] failed to process session due to org.apache.nifi.processor.exception.MissingFlowFileException: Unable to find content for FlowFile; Processor Administratively Yielded for 1 sec: org.apache.nifi.processor.exception.MissingFlowFileException: Unable to find content for FlowFile
org.apache.nifi.processor.exception.MissingFlowFileException: Unable to find content for FlowFile
        at org.apache.nifi.controller.repository.StandardProcessSession.handleContentNotFound(StandardProcessSession.java:3104)
        at org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2228)
        at org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2175)
        at org.apache.nifi.processors.standard.AbstractJsonPathProcessor.validateAndEstablishJsonContext(AbstractJsonPathProcessor.java:77)
        at org.apache.nifi.processors.standard.EvaluateJsonPath.onTrigger(EvaluateJsonPath.java:271)
        at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
        at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1147)
        at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:175)
        at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.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.access$301(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: org.apache.nifi.controller.repository.ContentNotFoundException: Could not find content for StandardContentClaim [resourceClaim=StandardResourceClaim[id=1542197040430-4449, container=default, section=353], offset=844526, length=142607]
        at org.apache.nifi.controller.repository.StandardProcessSession.getInputStream(StandardProcessSession.java:2167)
        at org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2192)
        ... 14 common frames omitted
Caused by: java.io.EOFException: null
        at org.apache.nifi.stream.io.StreamUtils.skip(StreamUtils.java:242)
        at org.apache.nifi.controller.repository.FileSystemRepository.read(FileSystemRepository.java:859)
        at org.apache.nifi.controller.repository.StandardProcessSession.getInputStream(StandardProcessSession.java:2135)
        ... 15 common frames omitted

`

1 个回复

经过一番搜索,似乎有两种问题会导致这样的错误。

  1. 关于消息内容的问题

这种问题应该是可重现的,因此如果一条消息在您的管道中失败一次,则在您重新运行它时它应该会再次失败。 这些问题应该很容易解决。

需要注意的是不正确的消息内容,甚至可能是空消息。

  1. 内容存储库问题

当 Nifi 摄取一条消息时,它会被放入内容存储库,直到需要再次触摸它。 第二种可能是存储库有问题。

可能的原因是对存储库的外部干扰(其他写入/删除/锁定内容)。 或者可能是操作系统级别的问题。 由于这篇 HCC 帖子,我找到了这个角度: https : //community.hortonworks.com/questions/231364/nifi-processing-files-as-zero-bytes.html

我无法帮助深入研究,但如果您已经安排了 Cloudera(Nifi 背后的驱动力)的支持,则支持团队应该能够在需要时进行进一步调查。

完全披露:我是Cloudera的员工

我们在集群中遇到了类似的问题。 您找到解决方法了吗? 在Nifi处理中打开了类似的线程Missing Flowfile异常,导致信息丢失

1 Nifi:按内容过滤流文件

我有大约 2000 个来自 JSON 格式的 REST API 调用的流文件。 一个文件看起来像: 现在我想通过参数manager器过滤它们。 如果manager是 true ,我应该跳过这个流文件。 所以我需要使用manager为 false 的流文件。 如何使用 Apache Nifi 执行 ...

2 NiFI“无法找到流文件内容”

我正在使用nifi 1.6并尝试修改传入flowFile的克隆时出现以下错误: [1]“无法找到FlowFile的内容:... MissingFlowFileException ...由ContentNotFoundException引起:找不到StandardClaim的竞争内容...由 ...

3 NiFi:查看流文件

我刚刚开始使用NiFi,当第一次拍摄时它很棒。 当事情失败时,我想从有问题的处理器中查看流文件或输出(stdout + stderr)。 是否有一种简单的方法来转储所有流文件的属性,或只是浏览流文件? 我觉得我错过了一些非常明显的东西,但是大多数教程只是走过一切都是第一次拍摄的例子 ...

5 如何监控 NIFI 流文件存储和内容存储阈值

有没有办法监控 NIFI 流文件和内容文件存储? 并触发警报(电子邮件/松弛)如果达到阈值(80%)。 我希望在Menu-> Cluster: JVM, FlowFile Storage, Content Storage显示监视器统计信息Menu-> Cluster: JVM, Flo ...

6 如何比较NiFi文件的内容?

我是NiFi的新手。 我被要求从FTP服务器获取文件。 如果文件内容与上一个相同,则不执行任何操作,否则将新文件发送到另一个FTP服务器。 有任何想法吗 ? 谢谢, 理查德 ...

7 Nifi处理中缺少流文件异常会导致信息丢失

在ETL过程中,我们有随机异常,这会导致流文件丢失。 Nifi部署在3个节点的Kubernetes集群上,该集群的存储库位于共享文件系统(GlusterFS)上。 我们进行了一些压力测试,在处理的2000个csv文件中,几乎有10%丢失了,但报告了异常。 我们还尝试缩小到一个节点并将并行线程数设置 ...

8 在 NiFi 中合并流文件

我正在使用 NiFi Version: 1.11.4 我要合并的flowfiles在NiFi。 假设我有 10 个流文件,例如: 我想使用所有SerialNumber来查询Table并deviceId获取所有序列号的两个字段( manufacturer 、设备deviceId ),然后通过匹 ...

9 来自Json文件的Nifi流

我有一个不断更新的新项目的Json文件。 使用Nifi,我想创建一个从该Json文件实时提取内容的流,然后制作一个输出文件,例如可以是CSV,以便随后可以在Excel中使用它进行一些分析。 我是Nifi的新手,所以您能为这个活动提出一些流程建议吗? 任何让我入门的东西都将大有帮助。 ...

10 nifi流csv文件到hdfs

设想 我正在尝试使用NiFi将存储的实时更新csv文件存储到HDFS的研究。 我有2个文件, kafka2hdfs.csv和test_csv.csv 。 两者都包含与以下内容相同的信息 我正在使用filebeat将文件传输到nifi 。 仅有几行filebeat将很快到达底部。 文件拍 它成 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM