数据流作业卡在从 Pub/Sub 读取

Posted

技术标签:

【中文标题】数据流作业卡在从 Pub/Sub 读取【英文标题】:Dataflow job stuck at reading from Pub/Sub 【发布时间】:2021-03-21 18:31:54 【问题描述】:

我们的SDK版本是Apache Beam Python 3.7 SDK 2.25.0

有一个管道可以从 Pub/Sub 读取数据,对其进行转换并将结果保存到 GCS。 通常它可以正常工作 1-2 周。之后就卡住了。

"Operation ongoing in step s01 for at least 05m00s without outputting or completing in state process
  at sun.misc.Unsafe.park(Native Method)
  at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
  at org.apache.beam.runners.dataflow.worker.fn.data.RemoteGrpcPortWriteOperation.maybeWait(RemoteGrpcPortWriteOperation.java:175)
  at org.apache.beam.runners.dataflow.worker.fn.data.RemoteGrpcPortWriteOperation.process(RemoteGrpcPortWriteOperation.java:196)
  at org.apache.beam.runners.dataflow.worker.util.common.worker.OutputReceiver.process(OutputReceiver.java:49)
  at org.apache.beam.runners.dataflow.worker.util.common.worker.ReadOperation.runReadLoop(ReadOperation.java:201)
  at org.apache.beam.runners.dataflow.worker.util.common.worker.ReadOperation.start(ReadOperation.java:159)
  at org.apache.beam.runners.dataflow.worker.util.common.worker.MapTaskExecutor.execute(MapTaskExecutor.java:77)
  at org.apache.beam.runners.dataflow.worker.fn.control.BeamFnMapTaskExecutor.execute(BeamFnMapTaskExecutor.java:123)
  at org.apache.beam.runners.dataflow.worker.StreamingDataflowWorker.process(StreamingDataflowWorker.java:1400)
  at org.apache.beam.runners.dataflow.worker.StreamingDataflowWorker.access$1100(StreamingDataflowWorker.java:156)
  at org.apache.beam.runners.dataflow.worker.StreamingDataflowWorker$7.run(StreamingDataflowWorker.java:1101)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)

步骤 01 只是一个"Read PubSub Messages" >> beam.io.ReadFromPubSub(subscription=subscription)

在此数据流之后,会增加工作人员的数量并停止处理任何新数据。作业仍处于RUNNNING 状态。

我们只需要重新启动作业即可解决它。但它每 2 周发生一次。

我们该如何解决?

【问题讨论】:

很难知道。这就像一个僵局。支持可以提供帮助.. 我认为我们需要更多信息来调试它。您可以提交支持票吗?如果没有,您能否提供有关您的管道的更多信息? @Artyom Tokachev,您可以在问题tracker 上报告此错误,同时分享管道详细信息。 @Artyom Tokachev 您是否设法解决了您的问题?对有类似情况的人有什么建议吗? 【参考方案1】:

这看起来像是旧版“Java Runner Harness”的问题。我建议使用Dataflow Runner v2 运行您的管道以避免此类问题。您也可以等到它成为默认设置(目前正在推出)。

【讨论】:

以上是关于数据流作业卡在从 Pub/Sub 读取的主要内容,如果未能解决你的问题,请参考以下文章

Postgres JDBC 客户端卡在从套接字读取

读取 txt 文件 JSON 数据以在 Cloud Pub Sub 中发布消息

结合 BigQuery 和 Pub/Sub Apache Beam

模板化数据流中的 Pub/Sub 输入完全忽略 NestedValueProvider

GCP 数据流:从 Pub/Sub IO 流式传输的系统滞后

Google Cloud Pub/Sub 中的积压工作