代码之家  ›  专栏  ›  技术社区  ›  yuppie-flu

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

  •  1
  • yuppie-flu  · 技术社区  · 8 年前

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

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

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

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

    1 回复  |  直到 8 年前
        1
  •  3
  •   Raghu Angadi    8 年前

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

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