0

我正在探索 NiFi 文档。我必须同意它是有据可查的开源项目之一。

我的理解是处理器在集群的所有节点上运行。但是,我想知道当我们使用 FetchS3Object、FetchHDFS 等内容拉取处理器时,内容是如何在集群节点之间分布的。在 FetchHDFS 或 FetchSFTP 等处理器中,所有节点都会连接到源吗?它是拆分内容并从多个节点获取,还是一个节点获取内容并在下游队列中对其进行负载平衡?

4

2 回答 2

1

@dagget 的答案传统上是处理这种情况的方法,通常被称为“list + fetch”模式。列表处理器仅在主节点上运行,列表发送到 RPG 以在整个集群中重新分配,输入端口接收列表并连接到并行提取的所有节点上运行的提取处理器。

在 1.8.0 中,现在有负载平衡连接,无需 RPG。您仍将仅在主节点上运行 List 处理器,然后将其直接连接到 Fetch 处理器,并在其间配置队列以实现负载平衡。

于 2019-02-07T14:10:44.547 回答
1

我认为这份文件可以回答您的问题:

https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html

在此处输入图像描述

对于其他文件存储,想法是相同的。

所有节点都会连接到源吗?

是的。如果您没有将处理器限制为仅在主节点上工作 - 它在所有节点上运行。

在此处输入图像描述

于 2019-02-07T09:18:34.767 回答