Google数据流:闲置的kafka读者

时间:2018-02-13 11:22:19

标签: apache-kafka google-cloud-dataflow apache-beam

我有Apache Beam 2.2.0实时作业,它在Google Dataflow平台上运行。该工作基本上从Kafka读取json事件,转换它并写入BigQuery。 问题是Google Dataflow跑步者不断关闭现有的Kafka消费者,然后使用以下消息创建新消费者:

  

logger:" com.google.cloud.dataflow.worker.ReaderCache"
    消息:"关闭空闲阅读器S4-0000000000000014"
    阶段:" S4"
    步骤:"读取Kafka / KafkaIO.Read / KafkaIO.Read / Read(UnboundedKafkaSource)/DataflowRunner.StreamingUnboundedRead.ReadWithIds"

然而,根据对卡夫卡消费者抵消滞后的监测,卡夫卡向消费者传递了大量信息。

问题是为什么Google Dataflow会这样做?它如何确定读者闲置?如何防止这种行为?

1 个答案:

答案 0 :(得分:3)

如果KafkaReader闲置(即工作人员不使用)1分钟,Dataflow工作人员会关闭读卡器。在这种情况下,空闲'是不是因为Kafka服务器是留给他们读取的消息。这意味着Dataflow工作人员没有尝试使用来自阅读器的任何消息1分钟。常见的原因是管道正忙着在不同的阶段做其他工作。例如。在聚合之后你可能会进行相当多的处理,在这种情况下,Dataflow正忙着在那个阶段工作。

此一分钟超时目前无法配置。你关闭它会注意到任何问题吗?当再次使用阅读器时,它将重新打开。