写点什么

Apache flink - PartitionNotFoundException

作者:Lin
  • 2022 年 4 月 08 日
  • 本文字数:1716 字

    阅读完需:约 6 分钟

Apache flink - PartitionNotFoundException

异常信息:

2022-04-08 15:39:11.056 ERROR [Flink Netty Client (:) Thread 8] o.a.f.r.i.n.netty.CreditBasedPartitionRequestClientHandler - received error response from remote: [/11.50.9.166:14755], InputChannelID: [c0008c5d7cafb637a1fb8017ec610f04] error: {}

org.apache.flink.runtime.io.network.partition.PartitionNotFoundException: Partition cd632f9a11f6bba6720add6148be156d@37944df80eeb3b978e7e5fe5115b52e0 not found.

at org.apache.flink.runtime.io.network.partition.ResultPartitionManager.createSubpartitionView(ResultPartitionManager.java:67)

at org.apache.flink.runtime.io.network.netty.CreditBasedSequenceNumberingViewReader.requestSubpartitionView(CreditBasedSequenceNumberingViewReader.java:94)

at org.apache.flink.runtime.io.network.netty.PartitionRequestServerHandler.channelRead0(PartitionRequestServerHandler.java:92)


原因分析与问题解决:

经过 Google 搜索,得到 StackOverFlow 上的 答案:That maybe yours nodes' net card is fulled

原文地址:https://stackoverflow.com/questions/54333557/apache-flink-partitionnotfoundexception


使我开始怀疑 flink 的集群网卡可能存在问题,立即将作业迁移不同机房的集群进行验证,问题得到解决,积压的消息也立马下去了。


事件经过

下午收到一位同事的求助,说是 Flink 作业消费的 MQ 主题的消息一直下不去,加大了并行度,也依然没解决积压:

日志报错:

  • 2022-04-08 15:15:59.591 INFO [Kafka Fetcher for So:_ex (8/20)] com.jd.bdp.jrc.kafka.clients.FetchSessionHandler - [Consumer clientId=taskhub, groupId=taskhub] Error sending fetch request (sessionId=INVALID, epoch=INITIAL) to node 392557412: com.jd.bdp.jrc.kafka.common.errors.DisconnectException.

  • 2022-04-08 15:15:59.597 INFO [Kafka Fetcher for So:ex (14/20)] com.jd.bdp.jrc.kafka.clients.FetchSessionHandler - [Consumer clientId=taskhub, groupId=taskhub] Error sending fetch request (sessionId=INVALID, epoch=INITIAL) to node 158942342: com.jd.bdp.jrc.kafka.common.errors.DisconnectException.

  • 2022-04-08 15:15:59.594 INFO [Kafka Fetcher for So:_ex (6/20)] com.jd.bdp.jrc.kafka.clients.FetchSessionHandler - [Consumer clientId=taskhub, groupId=taskhub] Error sending fetch request (sessionId=INVALID, epoch=INITIAL) to node 392557412: com.jd.bdp.jrc.kafka.common.errors.DisconnectException.

  • 2022-04-08 15:15:59.595 INFO [Kafka Fetcher for So:ex (17/20)] com.jd.bdp.jrc.kafka.clients.FetchSessionHandler - [Consumer clientId=taskhub, groupId=taskhub] Error sending fetch request (sessionId=INVALID, epoch=INITIAL) to node 392557412: com.jd.bdp.jrc.kafka.common.errors.DisconnectException.


一开始没怀疑这个日志有什么大的影响,毕竟是 INFO 级别的,可最终才发现这确实是问题所在。


检查集群拓扑,发现所有算子都在同一个 Slot,以为是性能问题,拆分了 Slot 分组,问题依旧


检查 Flink 程序代码,未发现异常。


检查数据写入的 Es 集群监控,写入 QPS 在 200 左右浮动,以为是集群问题,与集群运维确认,集群运维否认集群性能瓶颈。同时查看写入线程 reject 监控,未发现 reject 迹象。排除 Es 集群写入性能问题


找 Flink 平台运维同事协助,又发我了上边的 INFO 日志内容,让我仔细分析一下这个提示语中的问题,因为 Source 算子从后台未发现有数据流入。这才引起了我的重视,接着发现了 Flink 任务在启动时 报过 PartitionNotFoundException ,联系 MQ 中间件运维进行确认,他们否认这是 MQ 的错误,再查 PartitionNotFoundException,也就找到了网卡问题的答案。


切换集群后得到解决。


断断续续花费了半天事件的问题,终于得到了解决,先后找了自己团队 2 个技术专家咨询,又联系两个平台的运维,最终是个网卡问题。


反思


出问题之后,查日志非常关键,不要放过任何 错误提示,并且要主动观察 Flink 集群启动时的情况。文章开头的异常仅仅在 Flink 作业启动时抛出过,所以正常运行时,看不到。


用户头像

Lin

关注

文字,是一种表达方式 2017.12.22 加入

软件开发工程师

评论

发布
暂无评论
Apache flink - PartitionNotFoundException_flink 消费 kafak_Lin_InfoQ写作平台