如何设计集群nifi的模板
How to design templates for clustered nifi
设计nifi模板需要考虑底层集群吗?
这是我的简单流程
+-----------------+ +---------------+ +-----------------+
| | | | | |
| READ FROM | | MERGE | | PUT HDFS |
| KAFKA | | FILES | | |
| +-----------------------> | +---------------------> | |
| | | | | |
| | | | | |
| | | | | |
+-----------------+ +---------------+ +-----------------+
我有 3 个节点集群。当系统是 运行 我检查 "cluster" 菜单,看到只有主节点正在使用资源,其他集群节点似乎空闲...问题是这样的一个集群我应该根据集群设计模板还是nifi应该做负载均衡。
我看到我的一位同事为集群上的每个节点创建了远程处理器,并在模板中将负载均衡器放在它们前面,这是必需的吗? (如下图)
+------------------+
| | +-------------+
| REMOTE PROCESS | | input port |
+----> | GROUP FOR | | (rpg) |
| | NODE 1 | +-------------+
| | | |
| | | |
| +------------------+ v
+-----------------+ +-----------------+ RPG
| | | | | +--------------+
| READ FROM | | | | | |
| KAFKA | | LOAD BALANCER | | +------------------+ | MERGE FILES |
| +-------------> | +-------------> | | | |
| | | | | | REMOTE PROCESS | | |
| | | | | | GROUP FOR | | |
| | | | | | NODE 2 | | |
+-----------------+ +-----------------+ RPG | | +--------------+
| +------------------+ |
| |
| v
|
| +-------------------+ +---------------+
| | | | |
| | REMOTE PROCESS | | PUT HDFS |
+-----> | GROUP FOR | | |
| NODE 3 | | |
| | | |
| | | |
+-------------------+ +---------------+
除远程集群外,负载均衡器的用例是什么?我可以使用负载均衡器将流量拆分到多个处理器以加速操作吗?
Apache NiFi 不执行任何自动负载平衡或数据移动,因此您可以根据集群的方式设计数据流。如何做到这一点将取决于数据流以及数据如何被引入集群。
我曾经写过这篇文章来尝试总结一下方法:
https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html
在您使用 Kafka 的情况下,您应该能够获得如第一张图片所示的流程 运行(没有远程进程组)。这是因为Kafka是一个数据源,会允许每个节点消费不同的数据。
如果 ConsumeKafka 似乎只在一个节点上 运行ning,这可能有几个原因...
首先,确保 ConsumeKafka 没有被调度为主节点。
其次,计算出您的 Kafka 主题有多少个分区。 Kafka 客户端(由 NiFi 使用)会将 1 个消费者分配给 1 个分区,因此如果您只有 1 个分区,那么您只能让 1 个 NiFi 节点从中消费。这是一篇进一步描述此行为的文章:
http://bryanbende.com/development/2016/09/15/apache-nifi-and-apache-kafka
设计nifi模板需要考虑底层集群吗?
这是我的简单流程
+-----------------+ +---------------+ +-----------------+
| | | | | |
| READ FROM | | MERGE | | PUT HDFS |
| KAFKA | | FILES | | |
| +-----------------------> | +---------------------> | |
| | | | | |
| | | | | |
| | | | | |
+-----------------+ +---------------+ +-----------------+
我有 3 个节点集群。当系统是 运行 我检查 "cluster" 菜单,看到只有主节点正在使用资源,其他集群节点似乎空闲...问题是这样的一个集群我应该根据集群设计模板还是nifi应该做负载均衡。
我看到我的一位同事为集群上的每个节点创建了远程处理器,并在模板中将负载均衡器放在它们前面,这是必需的吗? (如下图)
+------------------+
| | +-------------+
| REMOTE PROCESS | | input port |
+----> | GROUP FOR | | (rpg) |
| | NODE 1 | +-------------+
| | | |
| | | |
| +------------------+ v
+-----------------+ +-----------------+ RPG
| | | | | +--------------+
| READ FROM | | | | | |
| KAFKA | | LOAD BALANCER | | +------------------+ | MERGE FILES |
| +-------------> | +-------------> | | | |
| | | | | | REMOTE PROCESS | | |
| | | | | | GROUP FOR | | |
| | | | | | NODE 2 | | |
+-----------------+ +-----------------+ RPG | | +--------------+
| +------------------+ |
| |
| v
|
| +-------------------+ +---------------+
| | | | |
| | REMOTE PROCESS | | PUT HDFS |
+-----> | GROUP FOR | | |
| NODE 3 | | |
| | | |
| | | |
+-------------------+ +---------------+
除远程集群外,负载均衡器的用例是什么?我可以使用负载均衡器将流量拆分到多个处理器以加速操作吗?
Apache NiFi 不执行任何自动负载平衡或数据移动,因此您可以根据集群的方式设计数据流。如何做到这一点将取决于数据流以及数据如何被引入集群。
我曾经写过这篇文章来尝试总结一下方法:
https://community.hortonworks.com/articles/16120/how-do-i-distribute-data-across-a-nifi-cluster.html
在您使用 Kafka 的情况下,您应该能够获得如第一张图片所示的流程 运行(没有远程进程组)。这是因为Kafka是一个数据源,会允许每个节点消费不同的数据。
如果 ConsumeKafka 似乎只在一个节点上 运行ning,这可能有几个原因...
首先,确保 ConsumeKafka 没有被调度为主节点。
其次,计算出您的 Kafka 主题有多少个分区。 Kafka 客户端(由 NiFi 使用)会将 1 个消费者分配给 1 个分区,因此如果您只有 1 个分区,那么您只能让 1 个 NiFi 节点从中消费。这是一篇进一步描述此行为的文章:
http://bryanbende.com/development/2016/09/15/apache-nifi-and-apache-kafka