【问题标题】:How exactly Apache Nifi ConsumeKafka_1_0 processor worksApache Nifi ConsumeKafka_1_0 处理器的工作原理
【发布时间】:2020-02-17 18:14:14
【问题描述】:

我有 Nifi 集群,Kafka 也安装在那里。

创建了一个包含 5 个分区的主题,开始使用一个 gourp-id 来消费该主题。这样每个分区都会得到唯一的消息。

现在我创建了 5 个 ConsumeKafka_1_0 处理器,目的是在每个消费者端获取唯一消息。但是只有 2 个 ConsumeKafka_1_0 正在消费所有消息,其余消息设置为理想值。

现在我所做的是启动 5 个命令行 Kafka 消费者,发生的事情是,我能够看到所有分区都在获取消息,并且只能以循环方式从命令行消费者消费它们。

另外,我尝试描述 Kafka 组,我看到只有 2 个 Nifi ConsumeKafka_1_0 正在消耗所有 5 个分区,其余部分是理想的,请参阅快照。

请告诉我我在使用 Nifi 消费者处理器时做错了什么。

注意 - 我使用的 Nifi 版本是 1.5,Kafka 版本是 1.0。

【问题讨论】:

    标签: apache-kafka kafka-consumer-api apache-nifi


    【解决方案1】:

    我写了这篇文章来解释与 Kafka 的集成是如何工作的:

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

    Apache Kafka 客户端(由 NiFi 使用)将分区分配给消费者。

    通常,如果您有一个 5 节点 NiFi 集群,画布上有 1 个 ConsumeKafka 处理器和 1 个并发任务,那么每个节点将消耗 1 个分区。

    【讨论】:

    • 如您在文章中提到的那样,我有什么方法可以在所有不同的节点中运行每个 nifi kafka 消费者?
    • 它应该自动发生,当启动处理器时,每个节点上都有一个实例,每个实例使用 Apache Kafka 客户端创建一个消费者,然后应该自动平衡和分配分区,NiFi 没有不要做任何特别的事情来控制那部分
    • #BryanBende 我们可以选择在“所有节点”上或仅在“主节点”上运行 consumeKafka 处理器。当我在我的案例中选择所有节点时,它的 3 个并在 Nifi 中创建了 5 个消费者,我们得到了 15 个实例,如图所示,这是出乎意料的,当我在每个 Nifi 消费者上只选择主节点时,一切都按预期工作,因为我有主题有 5 个分区,每个消费者都得到均匀分布的消息。
    • 但是正如你所解释的,每个消费者都在不同的节点上,我们当前的 Nifi 无法实现这一点,但所有消费者将只运行 1 个节点。在这种情况下,不会使用 Nifi 集群的全部容量,并且总是会使主节点过载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多