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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81661.shtml
英文地址,請注明出處:http://en.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;全面解析這兩…