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. AI编程助手那些事儿

    最近跟身边的程序员老杆子讨论需求时,惊奇的发现,他居然没使用AI编程助手.一时间有2个想法从大脑闪过,然后心里还带了一丝轻蔑: AI编程助手这么好的东西,你居然不用. 作为老程序员,你居然不跟上时代步 ...

  2. 祝贺小鹏汽车Gallardot同学成为Apache DolphinScheduler Committer!

    社区迎来新committer!这次是来自小鹏汽车的Gallardot,看看他与Apache DolphinScheduler社区的故事吧. 对话社区 Q1:您为Apache DolphinSchedu ...

  3. 跨越时空的对话:如何使用AI阅读工具ChatDOC快速建立数字化身?

    跨越时空的对话:如何使用 ChatDOC 快速建立数字化身?以史蒂夫·乔布斯 AI 为例 开门见山,这篇文章主要介绍如何将 AI 改造为靠谱.好用.基于某个人物的数字化身.比如,乔布斯 AI.马斯克 ...

  4. 高级工程师面试大全- java基础篇

    1.什么是java虚拟机 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功 ...

  5. 2023上海理工大学校内选拔赛A-D题

    前言 不要在意标题,既然是随记,就随性点() 今天参加了2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)_ACM/NOI/CSP/CCPC/ICPC算法编程 ...

  6. 22张图详解浏览器请求数据包如何到达web服务器(搞懂网络可以毕业了)

    浏览器的请求数据包如何到达web服务器? 很多读者对于其中的完整流程不是特别的了解,下面一口君通过这22张图,详细的讲解我们点击浏览器的网址之后,数据包是如何经过重重险阻到达web server的. ...

  7. Vue状态管理库Pinia详解

    Pinia 是 Vue 的状态管理库,它提供了一种更简单.更不规范的 API 来管理应用的状态.Pinia 的设计哲学是简单性和易用性,它避免了 Vuex 中的许多复杂概念,如 mutations 和 ...

  8. 使用FastAPI来开发项目,项目的目录结构如何规划的一些参考和基类封装的一些处理

    使用FastAPI开发项目时,良好的目录结构可以帮助你更好地组织代码,提高可维护性和扩展性.同样,对基类的封装,也可以进一步减少开发代码,提供便利,并减少出错的几率. 下面是一个推荐的目录结构示例: ...

  9. .NET 开源报表神器 Seal-Report

    前言 Seal-Report 是一款.NET 开源报表工具,拥有 1.4K Star.它提供了一个完整的框架,使用 C# 编写,最新的版本采用的是 .NET 8.0 . 它能够高效地从各种数据库或 N ...

  10. el-popover - 问题

    背景:elemet - ui和vue , el-table中使用了 el-popover , el-popover 中使用了form, 每编辑一行数据,点击编辑按钮,出现el-popover弹窗,页面 ...