Flink运维要点

一、Flink 运维核心策略

1. 集群部署与监控
  • 资源规划
    • 按业务优先级分配资源:核心作业优先保障内存和 CPU,避免资源竞争。
    • 示例:为实时风控作业分配专用 TaskManager,配置 taskmanager.memory.process.size=8g
  • 监控体系
    • 集成 Prometheus 和 Grafana,监控指标包括:
    • - flink_taskmanager_numRegisteredTaskManagers  # 在线TM数量
      - flink_jobmanager_job_numRunningJobs         # 运行中作业数
      - flink_taskmanager_status_jvm_memory_used    # JVM内存使用
      - flink_taskmanager_network_buffer_pool_usage # 网络缓冲区使用率
      

2. Checkpoint 与状态管理

配置优化

execution.checkpointing.interval: 30s        # 检查点间隔
execution.checkpointing.timeout: 10m         # 超时时间
execution.checkpointing.min-pause: 5s        # 最小间隔
state.checkpoints.num-retained: 3            # 保留最近3个检查点

状态后端选择

  • 大状态作业(如窗口聚合)使用 RocksDB:
state.backend: rocksdb
state.backend.rocksdb.localdir: /data/rocksdb # 本地存储路径
3. 资源调优
  • 并行度调整
    • 根据输入分区数设置初始并行度:
    • # 例如Kafka有16个分区
      env.set_parallelism(16)

内存配置

  • 避免 OOM:
taskmanager.memory.process.size: 12g
taskmanager.memory.heap.size: 8g          # 堆内存
taskmanager.memory.network.max: 1g        # 网络缓冲区上限

二、常见问题及解决方案

1. 作业频繁失败
  • 可能原因
    • Checkpoint 超时或失败
    • 外部系统连接中断(如 Kafka/ZK)
    • 状态后端性能不足(如 HDFS 网络抖动)
  • 解决步骤
    1. 查看 Web UI 的 Checkpoint 统计,定位失败原因
    2. 增加 Checkpoint 超时时间:execution.checkpointing.timeout: 20m
    3. 配置重试策略:
  • env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,                            // 最多重试3次Time.of(10, TimeUnit.SECONDS) // 每次重试间隔10秒
    ));
2. 反压问题
  • 排查方法
    • 通过 Web UI 的反压监控面板,识别红色(严重反压)算子
    • 使用 Thread Dump 分析阻塞点
  • 解决方案
    • 对瓶颈算子单独提效:
    • .keyBy(...)
      .window(TumblingEventTimeWindows.of(Time.seconds(10)))
      .process(new MyHeavyProcessFunction())
      .setParallelism(32)  // 单独提高并行度

优化数据倾斜:

// 两阶段聚合解决数据倾斜
.map(new AddRandomKeyFunction())  // 添加随机前缀
.keyBy(...)
.window(...)
.aggregate(new PartialAggregate())
.keyBy(...)
.window(...)
.aggregate(new FinalAggregate())
3. OOM 故障
  • 定位工具
    • JVM 堆转储分析(Heap Dump)
    • Flink Web UI 的 TaskManager 内存监控
  • 解决措施
    • 增加堆内存:taskmanager.memory.heap.size: 10g
    • 启用堆外内存:
    • state.backend.rocksdb.memory.managed: true  # 使用Flink管理的内存
      taskmanager.memory.managed.fraction: 0.4    # 管理内存占比40%

减少状态大小:

StateTtlConfig ttlConfig = StateTtlConfig.newBuilder(Time.hours(1))  // 状态1小时过期.setUpdateType(StateTtlConfig.UpdateType.OnCreateAndWrite).build();
valueStateDescriptor.enableTimeToLive(ttlConfig);

三、自动化运维实践

1. 告警配置(Prometheus+Alertmanager)

groups:
- name: flink.rulesrules:- alert: FlinkJobFailedexpr: flink_jobmanager_job_numFailedJobs > 0for: 1mlabels:severity: criticalannotations:summary: "Flink Job 失败 (instance {{ $labels.instance }})"description: "Job {{ $labels.job_name }} 失败,原因: {{ $labels.error_message }}"

2. 故障自愈脚本

#!/bin/bash
# 自动重启失败的Flink作业
JOB_ID=$(flink list -r | grep "FAILED" | awk '{print $4}')
if [ ! -z "$JOB_ID" ]; thenflink cancel $JOB_IDflink run -s last-savepoint-path /path/to/job.jarecho "已重启失败作业: $JOB_ID"
fi

3. 资源弹性扩缩

# K8s部署Flink时的HPA配置
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:name: flink-taskmanager-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: flink-taskmanagerminReplicas: 3maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 70

四、性能调优进阶

1. 网络优化
taskmanager.network.numberOfBuffers: 16384  # 增加网络缓冲区数量
taskmanager.network.memory.fraction: 0.15   # 网络内存占比15%

2. JVM 参数优化

env.java.opts.taskmanager: "-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError"

3. 状态压缩

// 启用RocksDB状态压缩
RocksDBStateBackend backend = new RocksDBStateBackend("hdfs:///flink/checkpoints");
backend.setDbOptions(new DBOptions().setAllowOsBuffer(true).setUseFsync(false));
backend.setEnableIncrementalCheckpoints(true);  // 启用增量检查点
env.setStateBackend(backend);

五、安全与权限管理

1. Kerberos 认证
security.kerberos.login.enabled: true
security.kerberos.login.keytab: /path/to/keytab
security.kerberos.login.principal: flink@EXAMPLE.COM

2. REST API 鉴权

rest.auth.type: basic
rest.auth.basic.realm: Flink REST API
rest.auth.basic.users: admin:password123

3. 网络隔离

# 通过防火墙限制访问
iptables -A INPUT -p tcp --dport 8081 -s trusted-ip-range -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j DROP

六、版本升级策略

1. 滚动升级步骤
  1. 从稳定版本(如 1.13)升级到 1.14:

# 1. 保存当前作业的Savepoint
flink savepoint <job-id> hdfs:///flink/savepoints/upgrade-sp# 2. 停止Flink集群
bin/stop-cluster.sh# 3. 替换Flink二进制文件
rm -rf flink-1.13.6
tar xzf flink-1.14.4-bin-scala_2.12.tgz# 4. 复制原有配置
cp conf/* flink-1.14.4/conf/# 5. 启动新集群
cd flink-1.14.4
bin/start-cluster.sh# 6. 从Savepoint恢复作业
flink run -s hdfs:///flink/savepoints/upgrade-sp /path/to/job.jar

验证升级结果:

# 检查作业状态
flink list -r# 查看Web UI确认指标正常

七、高可用部署

1. ZooKeeper 集群配置
high-availability: zookeeper
high-availability.cluster-id: /flink-cluster-1
high-availability.zookeeper.quorum: zoo1:2181,zoo2:2181,zoo3:2181
high-availability.storageDir: hdfs:///flink/ha/

2. 多 JobManager 部署

# conf/jobmanager-rpc-addresses
jobmanager1
jobmanager2
jobmanager3# 启动所有JM
bin/jobmanager.sh start-all

通过以上策略,可以构建稳定、高效的 Flink 运维体系,快速响应并解决各类生产问题。建议定期进行故障演练(如模拟 TaskManager 崩溃),验证应急预案的有效性。 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/81661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试点补充

目录 1. 搭建lnmp Linux 系统基础命令 nginx相关命令 MySQL 相关命令 PHP 相关命令 验证命令 下载并部署 Discuz! X3.4 论坛 到 Nginx 网站 2. 脑裂 2.1 脑裂的定义 2.2 脑裂产生的原因 1. 主备节点之间的心跳线中断 2. 优先级冲突 3. 系统或服务负载过高 2.3 如何…

天能股份SAP系统整合实战:如何用8个月实现零业务中断的集团化管理升级

目录 天能股份SAP系统整合案例&#xff1a;技术驱动集团化管理的破局之路 一、企业背景&#xff1a;新能源巨头的数字化挑战 二、项目难点&#xff1a;制造业的特殊攻坚战 1. 生产连续性刚性需求 2. 数据整合三重障碍 3. 资源限制下的技术突围 三、解决方案&#xff1a;S…

嵌入式学习笔记 - STM32独立看门狗IWDG与窗口看门狗WWDG的区别

下图说明了独立看门狗IWDG与窗口看门狗WWDG的区别: 从中可以看出&#xff1a; 一 复位 独立看门狗在计数器技术导0时复位&#xff0c; 窗口看门狗在计数器计数到0X40时复位。 二 喂狗 独立看门狗可以在计数器从预装载值降低到0过过程中的任意时间喂狗&#xff0c; 窗口看…

配电房值守难题终结者:EdgeView智能监控的7×24小时守护

在电力行业数字化转型的背景下&#xff0c;开关柜中的设备作为电能传输过程中的重要一环&#xff0c;其质量及运行状态直接关系到电网的安全性、可靠性、稳定性和抵抗事故的能力。 然而&#xff0c;在开关柜的调试部署与运行使用阶段&#xff0c;也常常会遇到设备标准不统一、…

B树与B+树全面解析

B树与B树全面解析 前言一、B 树的基本概念与结构特性1.1 B 树的定义1.2 B 树的结构特性1.3 B 树的节点结构示例 二、B 树的基本操作2.1 查找操作2.2 插入操作2.3 删除操作 三、B 树的基本概念与结构特性3.1 B 树的定义3.2 B 树的结构特性3.3 B 树的节点结构示例 四、B 树与…

如何使用VCS+XA加密verilog和spice网表

如果要交付verilog&#xff0c;但是需要对方进行VCS仿真&#xff0c;那么可以用以下方法&#xff1a; 一、基于编译指令的局部加密​ ​适用场景​&#xff1a;需精确控制加密范围&#xff08;如仅加密核心算法或敏感逻辑&#xff09;。 ​实现步骤​&#xff1a; ​代码标注…

策略模式-枚举实现

策略模式的实现方法有很多&#xff0c;可以通过策略类if,else实现。下面是用枚举类实现策略模式的方法。 定义一个枚举类&#xff0c;枚举类有抽象方法&#xff0c;每个枚举都实现抽象方法。这个策略&#xff0c;实现方法是工具类的很实现&#xff0c;代码简单好理解 枚举实现…

大数据hadoop小文件处理方案

Hadoop处理小文件问题的解决方案可分为存储优化、处理优化和架构优化三个维度,以下是综合技术方案及实施要点: 一、存储层优化方案 1.文件合并技术 离线合并:使用hadoop fs -getmerge命令将多个小文件合并为大文件并重新上传; MapReduce合并:开发专用MR…

线程调度与单例模式:wait、notify与懒汉模式解析

一.wait 和 notify&#xff08;等待 和 通知&#xff09; 引入 wait notify 就是为了能够从应用层面&#xff0c;干预到多个不同线程代码的执行顺序&#xff0c;可以让后执行的线程主动放弃被调度的机会&#xff0c;等先执行的线程完成后通知放弃调度的线程重新执行。 自助取…

ros运行包,Ubuntu20.04成功运行LIO-SAM

zz:~/lio_sam_ws$ source devel/setup.bash zz:~/lio_sam_ws$ roslaunch lio_sam run.launch 创建包链接&#xff1a; 链接1&#xff1a;Ubuntu20.04成功运行LIO-SAM_ubuntu20.04运行liosam-CSDN博客 链接2&#xff1a;ubuntu 20.04 ROS 编译和运行 lio-sam,并且导出PCD文件…

AI自动化工作流:开启当下智能生产力的价值

举手之言&#xff1a;AI自动化工作流创造了什么呢&#xff1f; AI自动化工作流 &#xff0c;顾名思义&#xff0c;是将人工智能&#xff08;AI&#xff09;技术与自动化流程相结合&#xff0c;通过智能化的方式来完成复杂的任务和操作。简单来说&#xff0c;它就是利用AI的强大…

【设计模式】- 行为型模式2

观察者模式 定义了一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个对象主题。这个主题对象在状态变化时&#xff0c;会通知所有的观察者对象&#xff0c;让他们能够自动更新自己。 【主要角色】 抽象主题角色&#xff1a;把所有观察者对象保存在一个集合里&…

mapbox-gl强制请求需要accessToken的问题

vue引入"mapbox-gl": "^2.15.0", 1.13以后得版本&#xff0c;都强制需要验证这个mapboxgl.accessToken。 解决办法&#xff1a;实例化地图的代码中&#xff0c;加入这个&#xff1a; const originalFetch window.fetch; window.fetch function ({ url…

已知6、7、8月月平均气温和标准差,求夏季季平均温度与标准差

由下面定理&#xff0c;得出平方和的公式&#xff1a;&#xff08;即每天的温度平方和&#xff09; 这样就可以推出季平均的算法&#xff1a; 举例&#xff1a;在Excel用公式算&#xff0c;不要手算&#xff1a; 因此季平均&#xff1a;(B2*C2B3*C3B4*C4)/SUM(B2:B4) 季标准差…

手机内存不够,哪些文件可以删?

1️⃣应用缓存文件 安卓&#xff1a;通过「文件管理器」→「Android」→「data」或「cache」文件夹&#xff08;部分需权限&#xff09;&#xff0c;或直接在应用设置中清除缓存 iOS&#xff1a;无需手动清理&#xff0c;系统会自动管理&#xff0c;或在应用内设置中清除&…

可编辑98页PPT | 某大型制造业数字化转型战略规划项目方案

荐言摘要&#xff1a;某大型制造业数字化转型战略规划项目方案聚焦企业全价值链升级&#xff0c;以“数据驱动业务重塑”为核心&#xff0c;打造行业标杆级数字化能力。项目将分三阶段推进&#xff0c;首阶段聚焦顶层设计&#xff0c;通过现状诊断明确痛点&#xff1a;针对企业…

lovart design 设计类agent的系统提示词解读

文章目录 lovart 设计agent介绍角色定义工作规范工具调用任务复杂度指南任务移交指南其他ref lovart 设计agent介绍 lovart作为设计agent&#xff0c;产品功能包括&#xff1a; 全链路设计能力&#xff1a;可以快速生成完整的品牌视觉方案&#xff0c;包括标志、配色、品牌规范…

使用 docker-volume-backup 备份 Docker 卷

docker-volume-backup 是一个用于备份 Docker 卷的工具&#xff0c;在 Windows 10 上使用它&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 确保 Docker 环境已安装并正常运行 在 Windows 10 上&#xff0c;你需要安装 Docker Desktop for Windows。可以从 Docker 官方网…

用户行为日志分析的常用架构

## 1. 经典Lambda架构 Lambda架构是一种流行的大数据处理架构&#xff0c;特别适合用户行为日志分析场景。 ### 1.1 架构组成 Lambda架构包含三层&#xff1a; - **批处理层(Batch Layer)**: 存储全量数据并进行离线批处理 - **实时处理层(Speed Layer)**: 处理最新数据&…

从API到UI:直播美颜SDK中的滤镜与贴纸功能开发与落地方案详解

时下&#xff0c;滤镜和贴纸功能&#xff0c;已经成为主播们展现个性、增强互动的“必备神器”。那么&#xff0c;这些功能背后的技术实现到底有多复杂&#xff1f;如何从API到UI构建一个流畅、灵活的美颜SDK呢&#xff1f;本文将从底层原理到前端实现&#xff0c;全面解析这两…