【问题标题】:Apache NiFi irregular data flow through Remote Process GroupsApache NiFi 不规则数据流通过远程进程组
【发布时间】:2017-05-09 04:44:27
【问题描述】:

我正在评估 Apache NiFi 以便在项目中使用。我有四个 NiFi v1.1.2 实例在 Ubuntu 14 系统上的云中运行。其中三个实例充当远程进程组(R1R2R3),其余实例(M1)用于管理 RPG 之间的流。 M1 生成一个 FlowFile,将 FlowFile 通过由三个 RPG 组成的管道传递,并在最后记录 FlowFile。 每个 RPG 只需将 R{id} 附加到 FlowFile 中的 ProcessedBy 属性,以便可以轻松查看数据处理的顺序。

我遇到的问题是订单不是 100% 的预期。我使用了 2 个管道(P1P2),它们分别按照 R1->R2->R3R2->R1->R3 的顺序遍历 RPG。 我所看到的是,P1 中的 FlowFile 大约有 50% 的时间没有被 R2 处理,而在 P2 它实际上反转了方向并被 R2 处理了两次,因此流顺序变为 @987654337 @

编辑:

这是我在M1中的流程图片

【问题讨论】:

  • 你能分享一张流程的图片吗?您如何分隔 P1 和 P2 的流量?您是否查看了示例流文件中的出处事件以了解它们的路径?
  • @James 为P1P2 隔离流量我要么运行其中一个。我正在查看数据来源事件,但它实际上并没有给我任何有关原因的信息。我可以看到 FlowFile 的路径在管道中移动,但我看不到是什么导致了不正确的流。

标签: apache-nifi


【解决方案1】:

我不相信远程进程组的行为符合您所期望的那种“功能语义”。奇怪的流文件流量模式正在发生,因为源自流左侧的流文件从右侧的 RPG 输出中出现(反之亦然),但对于 RPG 输出端口,这是正确的行为。

从一个输入端口向远程流发送流文件并不能保证它会通过同一 RPG 图节点上的输出端口“返回”。远程输出端口的多个侦听器将分别接收一部分输出。以视觉方式将 RPG 输入与其输出连接起来是典型的、推荐的,并且可以说是组织流程的最不言自明的方式。但这不是必需的。

您可以在远程 NiFis 上创建不同的命名端口,以提供更多远程输入/输出选项。

我只使用两个 NiFi 制作了一个示例流程,node1.nifi 向 node2.nifi 上的远程进程组发送和接收。 我组织了流程以强调 RPG 输入和输出端口之间可能断开的关系。

三个 RPG 图节点都引用 node2.nifi 上的同一个 RPG,但输入和输出是分开的。输出在两个位置收到,这导致分配略有不均。

【讨论】:

  • 谢谢@James 我没有意识到输入/输出是以这种方式工作的,我现在看到的结果完全有意义。
  • 我想要实现的是拥有一个无需修改即可重复使用的 RPG,即它可以同时在多个管道中使用,并且每次都会将处理后的数据返回到发送管道。是否有实现这一目标的“最佳实践”方法?
  • 一种选择是在客户端使用 InvokeHttp 并在服务器上使用 HandleHttpRequest...HandleHttpResponse 的 HTTP 服务。这将最适合调用和响应模式。
  • 使用 RPG,我认为您必须添加自己的逻辑来跟踪流文件的来源并将它们发送回其原始服务器。如果数字很小,您可以使用多个输入和输出端口来明确哪些流量是哪些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多