【问题标题】:How nifi distributes data between different nodes?nifi如何在不同节点之间分配数据?
【发布时间】:2020-01-31 14:45:04
【问题描述】:

我有一个带有 3 个节点的 nifi 集群。我在流程中使用了一个 invokeHTTP 处理器。基本上,有一个 post 端点每天为我提供 1 - 2GB JSON 数据,我最终将其保存在 POSTGRES 中。 Flow 工作正常,但我不确定我是否有效地使用了三个节点的整个集群。

这是我测试流程的两个场景,在这些场景中,我只是将 invokeHTTP 处理器的调度选项卡中的“执行”模式从“所有节点”更改为“主节点”

1- 在执行模式“所有节点”下,我看到 3 个请求从 invokeHTTP 传递到下一个处理器。因此,我看到的不仅仅是 2gb 的 json 响应,而是 6gb 的响应被传递给下一个处理器,这意味着所有 3 个节点都在做同样的事情,给集群和数据库带来了不必要的负载。

2- 在执行模式“主节点”下,我看到 1 个请求从 invokeHTTP 传递到下一个处理器。但我认为在这种情况下,只有一个节点被使用,其他 2 个节点什么也不做,这不是集群的正确使用。

使用整个集群的正确方法是什么?

【问题讨论】:

标签: apache-nifi


【解决方案1】:

一般来说,NiFi 不会自动在节点之间移动数据,除非您设置数据流来这样做。在您的情况下,您只希望 InvokeHttp 在一个节点上执行,以便仅将其设置为主节点。

之后取决于是否可以将响应分解为单独的部分。如果 2GB JSON 可以拆分为更小的流文件,那么您可以使用负载平衡连接将较小的部分分配到集群的其他节点,但如果不能,则必须在仅限主节点。

https://blogs.apache.org/nifi/entry/load-balancing-across-the-cluster

【讨论】:

  • 感谢回复,我会加个负载均衡器,尝试跨集群拆分数据。
猜你喜欢
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多