Performance 卡夫卡引起的NiFi工作流瓶颈

Performance 卡夫卡引起的NiFi工作流瓶颈,performance,concurrency,apache-kafka,apache-nifi,hortonworks-dataflow,Performance,Concurrency,Apache Kafka,Apache Nifi,Hortonworks Dataflow,我正在ApacheNIFI中创建一个数据摄取工作流,使用Kafka作为缓冲系统。我有一个运行相同工作流的3节点集群,每个节点有4个核心 我依赖于在不同卡夫卡主题之间移动数据的几个实例,这是工作流中最慢的部分,在性能方面非常不一致,因为两个相同的测试的持续时间最多可以增加100% 我们的发布和消费卡夫卡处理器在所有三个节点上运行,我们的卡夫卡主题有三个分区,跨越三个代理 有人知道是什么导致了这种不一致性吗?我可以做些什么来缓解这种不一致性并加快工作流程?最大的性能改进是设计流,使每个流文件包含多条

我正在ApacheNIFI中创建一个数据摄取工作流,使用Kafka作为缓冲系统。我有一个运行相同工作流的3节点集群,每个节点有4个核心

我依赖于在不同卡夫卡主题之间移动数据的几个实例,这是工作流中最慢的部分,在性能方面非常不一致,因为两个相同的测试的持续时间最多可以增加100%

我们的发布和消费卡夫卡处理器在所有三个节点上运行,我们的卡夫卡主题有三个分区,跨越三个代理


有人知道是什么导致了这种不一致性吗?我可以做些什么来缓解这种不一致性并加快工作流程?

最大的性能改进是设计流,使每个流文件包含多条消息的流文件更少,而不是每个流文件包含一条消息的多个流文件

很难说如何为您的用例做到这一点,因为我对您的流一无所知,比如数据的格式,或者您对每条消息都做了什么,但是让我们假设您有CSV数据……目标是有一个包含多行CSV的流文件,而不是每行CSV有一个流文件

在发布端,当您将此流文件发送到PublishKafka_0_10时,您将使用shift+enter将消息标界器属性设置为新行,并将CSV的每一行流式传输到Kafka

在使用上,如果您还设置了消息标界器,那么它将向一个流文件写入多条消息,最多最多可写入Max Poll记录


此外,您可以尝试调整“计划”选项卡上每个处理器的并发任务,以便并行执行更多发布或消耗。增加消费端的并发任务可能没有多大好处,因为您有3个分区和3个NiFi节点,所以每个分区都有一个线程,但是,如果您有6个分区和3个NiFi节点,那么您可能会从有2个并发任务中受益。

最大的性能改进是设计您的流,使您的流文件更少,每个流文件包含多条消息,而不是多个流文件,每个流文件包含一条消息

很难说如何为您的用例做到这一点,因为我对您的流一无所知,比如数据的格式,或者您对每条消息都做了什么,但是让我们假设您有CSV数据……目标是有一个包含多行CSV的流文件,而不是每行CSV有一个流文件

在发布端,当您将此流文件发送到PublishKafka_0_10时,您将使用shift+enter将消息标界器属性设置为新行,并将CSV的每一行流式传输到Kafka

在使用上,如果您还设置了消息标界器,那么它将向一个流文件写入多条消息,最多最多可写入Max Poll记录


此外,您可以尝试调整“计划”选项卡上每个处理器的并发任务,以便并行执行更多发布或消耗。在消费端增加并发任务可能没有多大好处,因为您有3个分区和3个NiFi节点,所以每个分区都有一个线程,但是如果您有6个分区和3个NiFi节点,那么您可能会从有2个并发任务中受益。

我们需要更多详细信息。。。什么版本的NiFi?什么版本的卡夫卡经纪人?卡夫卡处理器0.9和0.10的哪个版本?你是在PublishKafka面前看到流文件的堆积,还是说速度很慢?您是否一次发布和使用一条消息?NiFi版本1.1.0,卡夫卡版本0.10.1.2.1,0.10卡夫卡处理器,在发布卡夫卡之前,队列中的文件不断累积,使用卡夫卡没有按预期的速度返回文件,我相信它一次发布和使用1个文件,未包含特定的批处理逻辑。我们需要更多详细信息。。。什么版本的NiFi?什么版本的卡夫卡经纪人?卡夫卡处理器0.9和0.10的哪个版本?你是在PublishKafka面前看到流文件的堆积,还是说速度很慢?您是否一次发布和使用一条消息?NiFi版本1.1.0,卡夫卡版本0.10.1.2.1,0.10卡夫卡处理器,在发布卡夫卡之前,队列中的文件不断累积,使用卡夫卡没有按预期的速度返回文件,我相信它一次发布和使用1个文件,未包含特定的批处理逻辑。如何批处理流文件中的消息并将其发送给Kafka?如何批处理流文件中的消息并将其发送给Kafka?