flink jobmanager 终止,任务失败问题

现象

用户 flink 任务提交客户端侧抛出请求错误,经排查发现是客户端主动 cancle 的.接着排查 yarn app 日志,发现本质错误是 jm 退出了,接着看 jm 日志,jm 退出是由于失去了 leadership 导致的

排查过程

了解背景发现,用户有 flink ha任务,也有非 ha 任务, ha 使用的是基于 zookeeper 的实现

ha 任务是由于 jm 与选主的 zk 间的session 超时,导致jm 失去 leader

非 ha 任务是由于 jm 与 tm 间的心跳超时,jm 将 tm 置为 failed 状态,且没有配置 Restart Strategy

超时优化措施:

1.优化超时任务的 gc,通过 jstat 命令可以看到 tm jvm 的 old 分区占比 在 85 以上,

建议增大 flink 的 tm 内存参数 :

-D taskmanager.memory.task.heap.size

-D taskmanager.memory.managed.size

-D taskmanager.memory.task.off-heap.size

在原来值的基础上增大 50%

2.优化超时任务的超时时间

增加 zk server ticktime (已经调整)

增加 jm 和 tm 的心跳超时时间 heartbeat.timeout = 180000

解决办法

  1. 把 基于 ZooKeeper 的 HA 实现 改成 Flink on YARN 模式下的高可用,这样利用 yarn 自动拉起失败的 jobmanager 来解决实现任务的高可用

  2. 通过提交平台侧来实现任务的高可用,既让任务快速失败,然后通过平台侧的检测来重新提交来实现,需要配置如下参数,关闭 yarn 的自动拉起机制,从而让任务快速失败,被平台侧检测到,发起重新提交

    yarn.application-attempts: 1
    yarn.application-attempt-failures-validity-interval: -1


ZooKeeper参数调优 - skyl夜 - 博客园 (cnblogs.com)
Flink JobManager 高可用详解 - 白墨的博客 | Ink's Blog (baixin.ink)

相关推荐
用户3610588626129 小时前
Flink SQL 之 Flink SQL 企业级案例分析:从实时大屏到用户画像与风控告警的生产实践
大数据·flink
用户3610588626129 小时前
Flink SQL 之 Table Window 原理及代码实现:从滚动窗口到窗口 TopN 与窗口 Join 实战
大数据·flink
nvd112 天前
深入剖析 Apache Flink 流批双引擎的动态扩缩容架构:机制演进、状态重对齐与生产落地推导
架构·flink·apache
starzy19903 天前
Flink Task 执行源码深度剖析:从 Task 线程启动到算子链执行的完整链路
大数据·flink
starzy19904 天前
Flink Task 调度任务深度剖析:从调度策略到故障恢复的完整链路
java·大数据·flink
starzy19904 天前
Flink 任务调度 Graph 源码深度剖析:从 StreamGraph 到 ExecutionGraph 的三层演进
java·大数据·flink
用户3610588626124 天前
Flink Time 之 AllowedLateness 深度剖析:从本质定义到内部机制与实战最佳实践
大数据·flink
starzy19904 天前
Flink SlotPool 申请资源源码跟踪:从调度器请求到Task部署的完整链路
大数据·flink
starzy19905 天前
Flink SlotManager 分配 Slot 源码深度剖析:从请求接收到状态转换的完整链路
大数据·flink
池佳齐5 天前
【软考高级架构师案例】流计算 vs 批处理,Spark 和 Flink 该怎么选?
大数据·flink·spark