NIFI - 隔离处理器

时间:2016-01-20 14:35:53

标签: apache-nifi

群集方案中的流文件如何跨群集节点进行负载平衡/分布?例如,如果我有一个我指定为隔离的GetFile处理器,来自该处理器的流文件如何在集群节点上分布?是否需要添加其他工作/处理器?

2 个答案:

答案 0 :(得分:7)

今天在Apache NiFi中,跨群集的负载平衡问题有两个主要答案。首先,您必须首先考虑数据如何到达集群。其次,一旦它在集群中,你需要重新平衡。

要将数据导入群集,请务必选择本身可扩展的协议。提供排队语义的协议对此有利,而不提供排队语义的协议是有问题的。作为具有排队语义的示例,可以考虑使用JMS队列或Kafka或某些HTTP API。这些很棒,因为一个或多个客户端可以以队列方式从中拉出它们,从而分散负载。不提供此类行为的协议示例将下注GetFile或GetSFTP等。这些都是有问题的,因为客户端必须共享关于他们看到哪些数据的状态。为了解决这些协议,我们已经转移到了ListSFTP'和' FetchSFTP'其中ListSFTP出现在集群中的一个节点(主节点)上,然后它使用NiFi的站点到站点功能来负载均衡到集群的其余部分,然后每个节点获得其工作份额并执行FetchSFTP以实际提取数据。现在也为HDFS提供相同的模式。

在描述该模式时,我还提到了Site-to-Site。这就是两个nifi集群可以共享数据的方式,这对于站点间和Instra-Site分发需求非常有用。它也适用于在同一群集中传播负载。为此,您只需将数据发送到同一个集群,然后NiFi负责负载平衡和故障转移以及检测新节点和删除的节点。

所以有很多选择。这就是说我们可以做得更多,将来我们计划为你提供一种连接方式,表明它应该是自动负载平衡的,然后它会在幕后做我所描述的。

由于 乔

答案 1 :(得分:0)

这是更新后的答案,在更新的NiFi版本中更简单。我在这里运行Apache NiFi 1.8.0。

我在这里找到的方法是在主节点上使用处理器,该处理器将发出流文件以通过负载平衡连接使用。

例如,使用List*处理器之一,在“调度”中将其“执行”设置为在主节点上运行。

enter image description here

这应该送入下一个处理器。选择连接并设置其“负载平衡策略”。

enter image description here

您可以在其design document中了解有关此功能的更多信息。