在今天的ApacheNiFi中,有一种新的和改进的负载平衡方法,在集群中的节点之间。随着 NiFi 1.8.0 的引入,连接负载平衡已添加到任何连接的每个处理器之间。现在,您有一个易于设置的选项,用于在节点之间自动负载平衡。

使用远程进程组在 Apache NiFi 节点之间分配负载的旧天数已经结束。为了获得最大的灵活性、性能和易用性,请确保升级现有流以使用内置的连接负载平衡。

如果您正在运行较新版本的 Apache NiFI 或 Cloudera 流管理 (CFM),则您有一种更好的方法来在处理器和服务器之间分发处理。这是针对 Apache NiFi 1.8.0 及更高版本的版本,包括最新版本 1.10.0。

注意:远程进程组不再需要用于负载平衡!请改用实际的负载平衡连接!远程进程组应仅用于分发到其他群集。

Load balancing in Apache NiFi

Apache NiFi 中的负载平衡

您可能还喜欢:Apache NiFi 1.0.0:零主聚类

阿帕奇NiFi负载平衡

自2018年以来,它一直是一个真棒功能:https://blogs.apache.org/nifi/entry/load-balancing-across-the-cluster。

Configuring a connection

配置连接

我们有几个负载平衡选项,包括”循环”,在故障条件下,允许将数据重新平衡到另一个节点。这可以重新平衡每秒数千个或更多流文件,具体取决于流文件大小。这样做是为了让节点有机会重新连接并继续处理。

Round robin for load balancing

负载平衡的循环

数据分发策略

另一个选项是”按属性分区”和”单个节点”,这将排队数据,直到该单个节点或分区节点返回

我们需要动态和弹性,所以它只需要是一个节点。这允许将”类似数据”发送到群集中某些用例可能需要的同一节点。

对于表加载用例中的 Merges,为此路由使用自定义属性名称可能非常强大。我们也可以选择根本不平衡负载。

阿帕奇NiFi的弹性缩放

添加到 NiFi 的一个重要新功能是允许节点停用并断开与群集的连接,并卸载其所有数据。这对库伯内特斯和弹性的动态缩放非常重要。

弹性缩放对于白天或年份中不同的工作负载(如每小时一次负载或每周工作)非常重要 – 可向上扩展以满足 S.A 和截止日期,但尽可能缩小规模以节省云支出!现在,NiFi 不仅解决了数据问题,还为您节省了资金。

Apache NiFi 节点相关性

远程进程组不支持节点关联。节点相关性在我们的“按属性分区”策略中支持,并且具有许多用途。

远程进程组

为了替换以前的大用例,我们使用了远程进程组。我们有一个更好的解决方案,对于第一个连接,如ListSFTP运行在一个节点上,然后连接可以是“循环罗宾“。

重要用例

Apache NiFi 的此负载平衡功能显示了在边缘或其他数据中心分发大型数据集或非结构化数据捕获、拆分和传输,然后使用节点的属性关联以特定顺序重新构建数据的强大功能。

因此,有时您从系统(如一个多 TB 文件中的关系数据库转储)导出大量数据。我们需要一个 NiFi 节点来加载此文件,然后将其拆分为块,传输它,并将其发送到节点进行处理。有时,对记录进行排序需要使用属性将相关块(例如同一表)放在一个节点上。

我们还看到,一个大型zip文件包含许多类型的文件。通常,会有数百个多种类型的文件,我们可能希望基于文件名 root 路由到同一节点。这样,一个 NiFi 节点将处理所有相同的文件类型或表。

对于任何 NiFi 用户来说,实现和查看 ETL 过程中发生的情况是多么琐碎。

引用

Comments are closed.