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)

相关推荐
大大大大晴天2 小时前
Flink DataStream API多流操作与实践
flink
大大大大晴天1 天前
深入浅出 Flink DataStream API:原理与使用
flink
大大大大晴天2 天前
聊聊Flink的几种血缘方案
前端·flink
大大大大晴天️3 天前
主流CDC 组件对比选型指南
大数据·flink·cdc
大大大大晴天5 天前
Flink CDC 深度解析:从原理到实践的全链路指南
大数据·flink
数据开发 Yang 同学7 天前
【Flink 时间语义与窗口】Watermark 机制、迟到数据处理与生产踩坑
flink
本旺10 天前
Flink 2.x状态演进:理解解 1.x 与 2.x 状态存储机制
大数据·flink
Apache Flink10 天前
从结构化到多模态:Apache Flink,多模态数据处理的流式底座
大数据·flink·apache
婉然从物11 天前
Flink SQL 元数据持久化实战:从“每次重启表消失”到“Hive Metastore 永久存储”
hive·sql·flink
@SmartSi11 天前
新一代实时数据集成框架 Flink CDC 3.0 架构解析
flink·cdc