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. Google的TPU的运算数据类型最高为32比特,也就是说TPU不支持double数据类型,浮点数类型最高支持float32

    Google的TPU的运算数据类型最高为32比特,也就是说TPU不支持double数据类型,浮点数类型最高支持float32 地址: https://cloud.google.com/tpu/docs ...

  2. 【转载】 softmax_cross_entropy_with_logits中“logits”是个什么意思?

    原文地址: https://zhuanlan.zhihu.com/p/51431626 -------------------------------------------------------- ...

  3. Ubuntu系统下python模块graphviz运行报错:graphviz.backend.execute.ExecutableNotFound: failed to execute PosixPath(‘dot‘)

    代码中需要运行python模块graphviz,安装: pip install graphviz 运行后报错: graphviz.backend.execute.ExecutableNotFound: ...

  4. Mybatis-Plus系统化学习之注解的使用

    1.背景 注解的使用 大多数请求下我们默认为有如下对应关系 1.数据库中的表名 ---> java中的实体类名 (下划线与驼峰转换) 2.数据中的id为主键 3.数据库中的字段名---> ...

  5. 9.150 Predefined macros

    9.150 Predefined macros The ARM compiler predefines a number of macros. These macros provide informa ...

  6. SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧

    SearXNG与LLM强强联合:打造用户隐私保护的智能搜索解答流程,隐私无忧,搜索无忧 SearXNG 是一个免费的互联网元搜索引擎,整合了各种搜索服务的结果.用户不会被跟踪,也不会被分析. gith ...

  7. .net core 负载均衡取客户端真实IP

    一个网关代码(.net core 3.1),部署到负载均衡器有故障,发现获取到的客户端IP都是内网IP了,负载均衡用的是阿里云的SLB . 记录一下修改过程 在Strup.cs 中的 Configur ...

  8. Redis、Nginx、SQLite、Elasticsearch等开源软件成功的原因及他们对IT技术人员的启示

    引言 这些年在自研产品,对于如何做好产品进行了一些思考.随着开源软件的蓬勃发展,许多开源项目已经成为IT行业的核心组成部分.像Redis.Nginx.SQLite.Elasticsearch这些知名的 ...

  9. docker 修改容器内容后更新镜像的流程

    在 Docker 中,如果你修改了一个容器的内容并希望将这些更改保存为一个新的镜像,可以按照以下步骤进行: docker version: 26.1 1. 确保容器运行 首先,确保你正在修改的容器是运 ...

  10. 学习高校课程-软件设计模式-OOP 和 UML 类图 OOP 与 Java(lec1)

    Lecture 1:OOP and UML Class DiagramsOOP with Java OOP 和 UML 类图 OOP 与 Java Object-Oriented Programmin ...