flink jobmanager 终止任务失败问题
:root { --default-font: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei Light", sans-serif; --font-monospace: 'Source Code Pro', monospace; --background-primary: #ffffff; --background-modifier-border: #e0e0e0; --text-accent: #705dcf; --text-accent-hover: #7a6ae6; --text-normal: #2e3338; --background-secondary: #f2f3f5; --background-secondary-alt: #fcfcfc; --text-muted: #888888; --font-mermaid: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei Light", sans-serif; --text-error: #E4374B; --background-primary-alt: #fafafa; --background-accent: ''; --interactive-accent: hsl( 254, 80%, calc( 68% + 2.5%)); --background-modifier-error: #E4374B }
body, input { font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif }
code, kbd, pre { font-family: "Roboto Mono", "Courier New", Courier, monospace; background-color: rgba(245, 245, 245, 1) }
pre { padding: 1em 0.5em }
table { background: rgba(255, 255, 255, 1); border: 1px solid rgba(102, 102, 102, 1); border-collapse: collapse; padding: 0.5em }
table thead th, table tfoot th { text-align: left; background-color: rgba(234, 234, 234, 1); color: rgba(0, 0, 0, 1) }
table th, table td { border: 1px solid rgba(221, 221, 221, 1); padding: 0.5em }
table td { color: rgba(34, 34, 34, 1) }
.callout[data-callout="abstract"] .callout-title, .callout[data-callout="summary"] .callout-title, .callout[data-callout="tldr"] .callout-title, .callout[data-callout="faq"] .callout-title, .callout[data-callout="info"] .callout-title, .callout[data-callout="help"] .callout-title { background-color: rgba(130, 142, 231, 1) }
.callout[data-callout="tip"] .callout-title, .callout[data-callout="hint"] .callout-title, .callout[data-callout="important"] .callout-title { background-color: rgba(52, 187, 230, 1) }
.callout[data-callout="success"] .callout-title, .callout[data-callout="check"] .callout-title, .callout[data-callout="done"] .callout-title { background-color: rgba(163, 224, 72, 1) }
.callout[data-callout="question"] .callout-title, .callout[data-callout="todo"] .callout-title { background-color: rgba(73, 218, 154, 1) }
.callout[data-callout="caution"] .callout-title, .callout[data-callout="attention"] .callout-title { background-color: rgba(247, 208, 56, 1) }
.callout[data-callout="warning"] .callout-title, .callout[data-callout="missing"] .callout-title, .callout[data-callout="bug"] .callout-title { background-color: rgba(235, 117, 50, 1) }
.callout[data-callout="failure"] .callout-title, .callout[data-callout="fail"] .callout-title, .callout[data-callout="danger"] .callout-title, .callout[data-callout="error"] .callout-title { background-color: rgba(230, 38, 31, 1) }
.callout[data-callout="example"] .callout-title { background-color: rgba(210, 59, 231, 1) }
.callout[data-callout="quote"] .callout-title, .callout[data-callout="cite"] .callout-title { background-color: rgba(170, 170, 170, 1) }
.callout-icon { flex: 0 0 auto; display: flex; align-self: center }
svg.svg-icon { height: 18px; width: 18px; stroke-width: 1.75px }
.callout { overflow: hidden; margin: 1em 0; box-shadow: 0 2px 2px rgba(0, 0, 0, 0.14), 0 1px 5px rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); border-radius: 4px }
.callout-title { padding: 0.5em; display: flex; gap: 8px; font-size: inherit; color: rgba(0, 0, 0, 1); line-height: 1.3em }
.callout-title-inner { font-weight: bold; color: rgba(0, 0, 0, 1) }
.callout-content { overflow-x: auto; padding: 0.25em 0.5em; color: rgba(34, 34, 34, 1); background-color: rgba(255, 255, 255, 1) !important }
ul.contains-task-list { padding-left: 0; list-style: none }
ul.contains-task-list ul.contains-task-list { padding-left: 2em }
ul.contains-task-list li input[type="checkbox"] { margin-right: 0.5em }
.callout-table, .callout-table tr, .callout-table p { width: 100%; padding: 0 }
.callout-table td { width: 100%; padding: 0 1em }
.callout-table p { padding-bottom: 0.5em }
.source-table { width: 100%; background-color: rgba(245, 245, 245, 1) }

现象

用户 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)

flink jobmanager 终止任务失败问题的更多相关文章

  1. 搭建高可用的flink JobManager HA

    JobManager协调每个flink应用的部署,它负责执行定时任务和资源管理. 每一个Flink集群都有一个jobManager, 如果jobManager出现问题之后,将不能提交新的任务和运行新任 ...

  2. Flink 源码解析 —— Flink JobManager 有什么作用?

    JobManager 的作用 https://t.zsxq.com/2VRrbuf 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac ...

  3. Flink JobManager 和 TaskManager 原理

    转自:https://www.cnblogs.com/nicekk/p/11561836.html 一.概述 Flink 整个系统主要由两个组件组成,分别为 JobManager 和 TaskMana ...

  4. Flink JobManager HA模式部署(基于Standalone)

    参考文章:https://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/jobmanager_high_availability. ...

  5. Flink – JobManager.submitJob

    JobManager作为actor, case SubmitJob(jobGraph, listeningBehaviour) => val client = sender() val jobI ...

  6. flink on yarn启动失败

    我启动hadoop on yarn 集群后 [root@node1 flink-1.6.1]# ./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 报的如下错误 ...

  7. Apache Flink jobmanager/logs路径遍历CVE-2020-17519

    影响版本 1.11.0 1.11.1 1.11.2 poc http://192.168.49.2:8081/jobmanager/logs/..%252f..%252f..%252f..%252f. ...

  8. [bug] flink on yarn 启动失败

    参考 https://www.cnblogs.com/huangguoming/p/11732663.html

  9. Flink on yarn以及实现jobManager 高可用(HA)

    on yarn https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/deployment/yarn_setup.html f ...

  10. Flink 源码解析 —— JobManager 处理 SubmitJob 的过程

    JobManager 处理 SubmitJob https://t.zsxq.com/3JQJMzZ 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1 ...

随机推荐

  1. dsu on tree 模板

    dsu on tree模板运用 例题以及代码: U41492 树上数颜色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 记录详情 - 洛谷 | 计算机科学教育新生态 (luogu. ...

  2. Linux环境变量,知识点汇总

    一.什么是环境变量? 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数. 环境变量本质就是一张表,保存在内存当中. 该表在用户登录系统的时候 ...

  3. 设计模式之cglib动态代理

    什么是动态代理呢?动态代理就是在java进程运行时,通过字节码技术,动态的生成某个类的代理类.在这个代理类中,我们可以做一些额外的操作,一方面仍然保持原有的方法的能力,另外一方面还增强了这些能力.听着 ...

  4. Go 互斥锁 Mutex 源码分析(二)

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 在 Go 互斥锁 Mutex 源码分析(一) 一文中分析了互斥锁的结构和基本的抢占互斥锁的场景.在学习锁的过程中,看的不少文章是基于锁的状态解释 ...

  5. ubuntu安装过程(双系统模式)中遇到的坑

    笔者在安装上win11后,看我的M.2硬盘太大,就想着以双系统方式再安装上个ubuntu,以方便以后使用.没想到和win11一样,也是连遇到挫折,一番折腾后最终才成功.下面记录下安装要点. 安装win ...

  6. python 接口传递字符串,特殊字符url编码

    from urllib.parse import quote aaa = "+xxxx" quote(aaa)

  7. HTB-Runner靶机笔记

    HTB-Runner靶机笔记 概述 Runner是HTB上一个中等难度的Linux靶机,它包含以下teamcity漏洞(CVE-2023-42793)该漏洞允许用户绕过身份验证并提取API令牌.以及d ...

  8. Failed to convert value of type 'java.lang.String' to required type

    DEBUG 微信小程序Java后台 Failed to convert value of type 'java.lang.String' to required type 产生这种条件的原因一般是使用 ...

  9. 音视频 SDK |合理配置视频参数,提升使用质量

    一.前言 在视频通话或直播时,开发者可以根据需要指定推流和拉流视频相关配置,如视频采集分辨率.视频编码输出分辨率.视频帧率.码率.视图模式和镜像模式. 设置合适的视频分辨率.帧率和码率可以在音视频场景 ...

  10. ASP.NET Core – MVC

    前言 在 ASP.NET Core – MVC vs Razor Page 里有提到 MVC. 它算是 WebAPI 的抽象. 但是通常 MVC 指的是比较传统的 Website, WebAPI 则是 ...