我正在研究NiFi文档。我必须同意,这是那里有据可查的开源项目之一。
我的理解是处理器在集群的所有节点上运行。 但是,我想知道当我们使用内容提取处理器(如FetchS3Object,FetchHDFS等)在群集节点之间分配内容时如何。在诸如FetchHDFS或FetchSFTP之类的处理器中,所有节点都将连接到源吗?它是将内容拆分并从多个节点中获取还是一个节点获取内容并在下游队列中进行负载均衡?
答案 0 :(得分:1)
我认为这份文件可以回答您的问题:
a cache-with-timeout decorator
https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html
对于其他文件存储,想法是相同的。
所有节点都将连接到源吗?
是的。如果您不将处理器限制为只能在主节点上运行,那么它将在所有节点上运行。
答案 1 :(得分:1)
@dagget的答案传统上就是处理这种情况的方法,通常称为“列表+提取”模式。列表处理器仅在主节点上运行,列表发送到RPG以在整个集群中重新分配,输入端口接收列表,并连接到在并行获取的所有节点上运行的获取处理器。
在1.8.0中,现在有了负载平衡连接,从而不再需要RPG。您仍将仅在主节点上运行列表处理器,然后将其直接连接到提取处理器,并在两者之间配置队列以实现负载平衡。