You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes环境Flink 1.14应用模式:手动触发Savepoint并恢复作业

一、手动触发Savepoint

  • 定位JobManager Pod:先找到对应Flink应用的JobManager Pod名称:

    kubectl get pods | grep jobmanager
    

    筛选出目标应用的JobManager Pod,记为<jobmanager-pod-name>。

  • 获取运行中的作业ID:执行命令查看当前作业的ID:

    kubectl exec <jobmanager-pod-name> -- flink list -r
    

    输出里的作业ID记为<job-id>。

  • 触发Savepoint:执行Savepoint触发命令,指定作业ID和Savepoint存储路径(建议用Checkpoint所在HDFS的子目录,比如hdfs://your-checkpoint-hdfs/savepoints):

    kubectl exec <jobmanager-pod-name> -- flink savepoint <job-id> hdfs://your-hdfs-path/savepoints
    

    如果希望触发Savepoint后直接停止作业,可以添加--stop参数:

    kubectl exec <jobmanager-pod-name> -- flink savepoint <job-id> hdfs://your-hdfs-path/savepoints --stop
    

    触发成功后,控制台会返回Savepoint的完整路径(类似hdfs://your-hdfs-path/savepoints/savepoint-xxxxxx-abcdef123456),请保存该路径。

二、基于Savepoint重启应用

  • 停止当前作业(若未用--stop参数):如果触发Savepoint时没有加--stop,先停止对应的Deployment:

    kubectl scale deployment <your-flink-app-deployment-name> --replicas=0
    # 或者直接删除Deployment(后续重新部署)
    # kubectl delete deployment <your-flink-app-deployment-name>
    
  • 修改Deployment启动参数:编辑Deployment配置,在Flink启动命令中添加-s参数指定Savepoint路径:

    kubectl edit deployment <your-flink-app-deployment-name>
    

    找到容器配置的command或args部分,原启动命令类似:

    command: ["flink", "run", "-d", "/path/to/your-app.jar"]
    

    修改为:

    command: ["flink", "run", "-d", "-s", "hdfs://your-savepoint-full-path", "/path/to/your-app.jar"]
    

    保存退出后,K8s会自动重新创建Pod,作业将从指定的Savepoint恢复运行。

  • 注意事项:

    • Savepoint存储路径需确保Flink集群有读写权限,和Checkpoint的HDFS权限一致即可。
    • 若作业并行度等配置有变更,恢复时需保证新配置和Savepoint兼容(比如并行度不能小于原作业的最大并行度)。

内容的提问来源于stack exchange,提问作者deeplay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:42:51