2017-07-07 69 views
2

设计nifi模板时,我们是否需要考虑底层集群?如何为集群设计模板nifi

这里是我的简单流程

+-----------------+       +---------------+      +-----------------+ 
|     |       |    |      |     | 
| READ FROM  |       | MERGE  |      | PUT HDFS  | 
| KAFKA   |       | FILES  |      |     | 
|     +-----------------------> |    +---------------------> |     | 
|     |       |    |      |     | 
|     |       |    |      |     | 
|     |       |    |      |     | 
+-----------------+       +---------------+      +-----------------+ 

我有3个节点的集群。当系统运行时我检查“集群”菜单中,只有主节点正在使用来源看,其他群集节点似乎闲置...问题是在这样一个集群中,我应该根据集群设计模板还是应该进行负载平衡。

我看到我的一位同事为集群上的每个节点创建了远程处理器,并将负载均衡器放在模板内部,这是否是必需的? (如下图所示)

                +------------------+ 
                    |     |     +-------------+ 
                    | 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   |    |    | 
                    |     |    |    | 
                    |     |    |    | 
                    +-------------------+    +---------------+ 

什么是用例的负载平衡器,除了远程集群,我可以使用负载均衡流量分成几个处理器用来加快操作?

回答

3

Apache NiFi不会执行任何自动负载平衡或数据移动,因此您需要以利用群集的方式设计数据流。如何做到这一点取决于数据流和数据如何被带入集群。

我写这篇文章的一次尝试和总结的方法:

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

在你的情况下与卡夫卡,你应该能够有如图的第一张图片运行流量(不远程进程组)。这是因为Kafka是一个允许每个节点使用不同数据的数据源。

如果ConsumeKafka似乎只在一个节点上运行,有可能是几个方面的原因...

首先,确保ConsumeKafka是不是只安排了主节点。

其次,找出您的卡夫卡主题有多少个分区。 Kafka客户端(由NiFi使用)将为1个分区分配1个用户,因此如果只有1个分区,则只能有1个NiFi节点消耗它。下面是文章进一步描述这种行为:

http://bryanbende.com/development/2016/09/15/apache-nifi-and-apache-kafka

+0

“首先,确保ConsumeKafka是不是只安排了主节点。” yesss ..这是问题..谢谢 – ygk