当前位置: 首页 > article >正文

Flink 常用问题及常用配置(有用)

一、Flink 常用问题及常用配置

参数

示例

说明

execution.checkpointing.interval

3min

Checkpoint 触发间隔

state.backend

rocksdb / filesystem

用于设置statebackend类型, 默认会以内存为statebackend(无法支持大状态)

taskmanager.memory.jvm-overhead.max

2048m

如果使用rocksdb Statebackend可能会出现堆外内存超用导致container lost问题,配置此参数可避免出现该问题

taskmanager.memory.jvm-overhead.fraction

0.2

默认是0.1 , 如果调整超过了1G,则需要调整taskmanager.memory.jvm-overhead.max, 增大max

taskmanager.memory.managed.fraction

0.5

设置managed memory的内存使用比例

taskmanager.memory.managed.size

2048m

设置managed memory的大小

state.backend.rocksdb.memory.partitioned-index-filters

true

对RocksDB 的 partitioned Index 做了多级索引, 如果rocksdb的性能较差,可以尝试开启次参数进行优化

state.checkpoint.fs.ignore-missing-file

false

当误删checkpoint导致作业无法启动时,通过设置该参数为true(默认false),使作业能够正常启动,仅在TM日志中记录一条异常(一般强烈建议不开启,可能会丢失状态,待出现该异常后再确定是否开启)

state.backend.checkpoint.stream-concat-enabled

true

开启状态文件合并,减少状态文件的数量.

env.java.opts.jobmanager=""

配置 jobManager jvm 参数

env.java.opts.taskmanager=""

配置 taskmanager jvm 参数

pipeline.operator-chaining

true

是否开启operator chain

flink.log.level

info / debug

flink日志级别

二、另外,CGroup内存和taskmanager heap 内存的区别

区别总结:

特性TaskManager Heap MemoryCGroup Memory
定义Flink 配置项 taskmanager.heap.size 设置的 JVM 堆内存操作系统(Linux)通过 CGroup 限制的 总内存
管理方式JVM(Java) 内部的垃圾回收(GC)进行管理Linux 内核 的 CGroup 进行管理
配置位置Flink 配置文件中的 taskmanager.heap.size通过操作系统或容器配置(如 Docker 的 --memory
内存类型仅限于 JVM 堆内存包括 堆内存非堆内存网络缓冲区
影响影响 Flink 任务的内存分配和垃圾回收频率控制整个 TaskManager 进程的内存使用限制
资源限制只影响 JVM 堆内存,不包括非堆内存限制 TaskManager 进程的所有内存消耗,包括堆内存、非堆内存和其他内存
超出限制时的处理可能导致频繁的垃圾回收,影响性能可能导致 OOM(Out of Memory)错误,TaskManager 崩溃

结论:

  • taskmanager.heap.size 主要影响 JVM 堆内存,它是 Flink 任务内存管理的一个核心部分。
  • CGroup 内存限制 是操作系统级别的限制,控制的是 TaskManager 进程的总体内存使用,包括堆内存、非堆内存以及其他类型的内存(例如网络缓冲区等)。CGroup 用于防止 TaskManager 因为内存使用过多而导致系统稳定性问题。

三、一般报错,报task manager was lost错误时:

task manager was lost只是现象,经常是内存OOM,container被kill掉了。具体是堆内内存不够还是堆外内存不够,需要具体看监控上的heap和cgroup内存监控,然后调整对应的内存资源分配。


http://www.kler.cn/a/405545.html

相关文章:

  • 操作系统大会2024 | 麒麟信安根植openEuler社区,持续技术创新 共拓新应用 探索新机遇
  • springboot整合hive
  • 结合第三方模块requests,文件IO、正则表达式,通过函数封装爬虫应用采集数据
  • 硬件知识 cadence16.6 原理图输出为pdf 网络名下划线偏移 (ORCAD)
  • 前端—Cursor编辑器
  • ESP32桌面天气摆件加文心一言AI大模型对话Mixly图形化编程STEAM创客教育
  • [ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-6:windows轻松访问后门
  • Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
  • 前端知识点---rest(javascript)
  • 【代码随想录day38】【C++复健】322. 零钱兑换;279.完全平方数;139.单词拆分;卡码网56. 携带矿石资源
  • 力扣 LeetCode 257. 二叉树的所有路径(Day8:二叉树)
  • 泷羽sec-星河飞雪-shell-7
  • 演讲回顾丨杭州悦数 CTO 叶小萌:图数据库发展新航向——拥抱 GQL,融合 HTAP,携手 AI
  • git config 指令详解
  • C#开发基础之借用dotnet CLI命令行参数的设计了解命令行构建用法
  • Android 在Android.bp或Android.mk文件移除原生内置应用
  • 服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例
  • Lumerical脚本——创建基本结构
  • comprehension
  • python文件对象方法
  • @PermitAll注解和@PreAuthorize注解
  • Next.js 开发教程(三):CSS 样式的完整指南
  • VLAN资源池(Java Python JS C++ C )
  • 如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
  • 已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案
  • 【c++笔试强训】(第十六篇)