Apache kafka 谷歌数据流:闲置的卡夫卡阅读器

Apache kafka 谷歌数据流:闲置的卡夫卡阅读器,apache-kafka,google-cloud-dataflow,apache-beam,Apache Kafka,Google Cloud Dataflow,Apache Beam,我有ApacheBeam2.2.0实时作业,它运行在Google数据流平台上。该作业基本上从Kafka读取json事件,将其转换并写入BigQuery。 问题在于,Google Dataflow runner不断关闭现有的Kafka消费者,然后创建新的Kafka消费者,并显示以下消息: 记录器:“com.google.cloud.dataflow.worker.ReaderCache” 消息:“关闭S4-00000000000000的空闲读卡器14” 阶段:“S4” 步骤:“从Kafka/Kaf

我有ApacheBeam2.2.0实时作业,它运行在Google数据流平台上。该作业基本上从Kafka读取json事件,将其转换并写入BigQuery。 问题在于,Google Dataflow runner不断关闭现有的Kafka消费者,然后创建新的Kafka消费者,并显示以下消息:

记录器:“com.google.cloud.dataflow.worker.ReaderCache”
消息:“关闭S4-00000000000000的空闲读卡器14”
阶段:“S4”
步骤:“从Kafka/KafkaIO.Read/KafkaIO.Read/Read(unboundakafkasource)/DataflowRunner.StreamingUnboundedRead.ReadWithIds读取”

然而,根据对卡夫卡消费者补偿滞后的监测,卡夫卡中有大量的消费者信息


问题是为什么谷歌数据流会这样做?它如何确定读卡器空闲?如何防止这种行为?

如果读卡器(如KafkaReader)闲置1分钟(即工作程序未使用),Dataflow worker将关闭读卡器。在这种情况下,“idle”不是w.r.t,而是Kafka服务器留下来读取的消息。这意味着Dataflow worker在1分钟内没有尝试使用来自读卡器的任何消息。常见的原因是管道在不同的阶段忙于做其他工作。例如,在聚合之后,您可能需要进行大量的处理,在这种情况下,数据流正忙于该阶段的工作


此一分钟超时当前不可配置。您是否注意到因关闭而产生的任何问题?当读卡器再次使用时,它将重新打开

非常感谢你的回复。这正是我的情况,后面的管道步骤比从Kafka读取要消耗更多的资源。我的问题是,我有自定义的Kafka客户端度量侦听器,它将它们推送到XDB存储中。每个卡夫卡指标都包含
客户id
作为参数<代码>客户端id是自动生成的,默认情况下是唯一的,因此每个新读卡器都会使用新的
客户端id
创建新的卡夫卡消费者。这意味着随着
客户id
参数的变化,度量也总是新的。所以管道在XDB中产生了太多不同的度量。XDB对每个db的最大度量数有限制。如何配置此一分钟超时?此超时不可配置。那是我的错别字。我纠正了它。请注意,启用自动缩放时,读卡器可以从一个工作线程移动到另一个工作线程,在这种情况下,必须在旧工作线程上关闭读卡器,在新工作线程上打开读卡器。您可以控制设置此客户端id吗?您可以将KafkaIO配置为调用函数来创建Kafka客户端。这样的东西有用吗?