【问题标题】:Flink Checkpoint failed- missing subtask respondFlink Checkpoint failed - 缺少子任务响应
【发布时间】:2019-04-29 20:24:12
【问题描述】:

检查点超时后失败。我们观察到有一些子任务没有响应。有什么想法会导致这个问题吗?

工作背景:

并行度:5

数据量:40k以下

BackPressure:在作业结束时发送到另一个 API,这可能需要一些时间。

missing subtask respond 外部调用:

  Future<> future = Producer.send(topic, genericRecord, dataSetID);
  future.get();

  return Boolean.TRUE;

【问题讨论】:

  • 您能否分享更多有关如何处理与外部 API 的连接的信息?从你所说的来看,问题几乎肯定存在。
  • 这是一个java异步调用,底层由Scala实现。你的意思是异步调用失败了,我想不通为什么它为这种子任务等待超过 10 分钟。 @大卫安德森

标签: apache-flink checkpoint


【解决方案1】:

这里似乎很可能是future.get() 阻塞,无论出于何种原因,都未能在检查点超时间隔内返回。

我可以建议您改用 Flink 的RichAsyncFunction。这样做的好处是子任务不会被阻塞,从而允许检查点完成。

RichAsyncFunction 将检查点未解决的未来,并在从失败中恢复时重新发出这些请求。

【讨论】:

  • 如果我删除future.get(),它可能会解决问题吗?而且,即使检查点失败,但我们没有失败发送任何记录。这是否意味着事务需要超过 10 分钟才能完成,从而导致检查点失败?
  • 似乎确实如此。在这种情况下,增加超时时间可能就足够了。
猜你喜欢
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2016-09-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多