我正在评估 Apache NiFi 在项目中的使用情况。我有四个 NiFi v1.1.2 实例在 Ubuntu 14 系统上的云中运行。其中三个实例充当远程进程组(R1
、R2
和 R3
),其余实例(M1
) >) 用于管理 RPG 之间的流程。
M1
生成一个 FlowFile,将该 FlowFile 通过由三个 RPG 组成的管道传递,并在最后记录该 FlowFile。
每个 RPG 只需将 R{id}
附加到 FlowFile 中的 ProcessedBy 属性,以便可以轻松查看数据处理的顺序。
我遇到的问题是订单 100% 不符合预期。我使用 2 个管道(P1
和 P2
),按照 R1->R2->R3
和 R2- 的顺序遍历 RPG。 >R1->R3
分别。
我看到的是,大约 50% 的时间 P1
中的 FlowFile 不被 R2
处理,而在 P2
中它实际上反转了方向并被 R2
处理两次,因此流程顺序变为 R2->R1->R2->R3
编辑:
最佳答案
我不相信远程进程组的行为符合您所期望的“函数语义”。奇怪的流文件流量模式正在发生,因为源自流左侧的流文件是从右侧的 RPG 输出中出现的(反之亦然),但这对于 RPG 输出端口来说是正确的行为。
从一个输入端口将流文件发送到远程流并不能保证它将通过同一 RPG 图节点上的输出端口“返回”。远程输出端口的多个监听器将分别接收一部分输出。以视觉方式将 RPG 输入与其输出连接起来是典型的、推荐的,并且可以说是组织流程的最不言自明的方式。但这不是必需的。
您可以在远程 NiFi 上创建不同的命名端口,为您提供更多远程输入/输出选项。
我仅使用两个 NiFi 制作了一个示例流程,其中 node1.nifi 向 node2.nifi 上的远程进程组发送和接收。 我组织流程是为了强调 RPG 输入和输出端口之间潜在的断开关系。
三个 RPG 图形节点都引用 node2.nifi 上的相同 RPG,但输入和输出是分开的。产出在两个地点接收,这导致分配略有不均。
关于apache-nifi - Apache NiFi 通过远程进程组的不规则数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848914/