【问题标题】:Apache Nifi - Flowfiles are stuck in queueApache Nifi - 流文件卡在队列中
【发布时间】:2019-05-09 09:36:47
【问题描述】:

流文件卡在队列中(按属性负载平衡),下一个下游处理器(MergeRecord 与 CSVReader 和 CSVRecordSetWriter)无法读取。从 Nifi UI 看来,流文件在队列中,但是当尝试列出队列时,它显示“队列没有流文件”。尝试清空队列也会给出确切的消息。 Nifi Logs 没有任何与处理器相关的异常。队列中大约有 80 个流文件。

我尝试了以下操作项,但都是徒劳的:

  • 重新启动下游和上游(ConvertRecord)处理器。
  • 已禁用和启用 CSVReader 和 CSVRecordSetWriter。
  • 已禁用负载平衡。
  • 流文件过期设置为 3 秒。

截图: 流文件: 合并记录属性: CSVReader 服务: CSVRecordSetWriter:

【问题讨论】:

  • 截图会有帮助。
  • @daggett 添加了屏幕截图。如果您还需要什么,请告诉我。
  • 请同时显示MergeRecord的参数
  • 添加了所有细节。
  • 您可能需要升级到 1.9.0 以解决负载平衡连接的一些问题。

标签: apache-nifi


【解决方案1】:

这可能是因为流文件的内容被删除了。但是,它的条目仍然存在于流文件注册表中。

如果您有一个 dockerized nifi 设置并且如果您没有繁重的生产流程,您可以停止您的 nifi 流程并删除 _*repository 文件夹中的所有内容(flowfile-repository、内容存储库等) (前提是您已安装所有目录并且没有其他数据丢失风险)

如果您需要进一步的帮助,请告诉我

【讨论】:

    【解决方案2】:

    您的合并记录处理器仅在主节点上运行,并且可能所有文件都在其他节点上(因为您正在进行负载平衡)。 NiFi 没有意识到下游处理器仅在主节点上运行,因此它不会自动将所有内容重新平衡到主节点。只需将 MergeRecord 更改为在所有节点上运行即可允许文件通过。

    唉,我还没有找到让所有流文件回到主节点上的方法,你可以使用“单节点”负载均衡策略来获取同一个节点上的所有文件,但不一定是主要的。

    【讨论】:

      【解决方案3】:

      您在负载平衡流文件的方式中有一个缺失配置。要检查是否停止 MergeRecord 处理器,以便能够检查和查看队列中的内容。

      在显示的模式窗口中,您可以检查流文件在哪里等待,很可能您的流文件实际上在其他节点之一上,但由于 MergeRecord 在主节点上运行,因此它没有任何内容它的队列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-03
        • 2020-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多