• Flink Java 之 Savepoints


    1. 什么是 Savepoint ?

    Savepoint 是依据 Flink checkpointing 机制所创建的流作业执行状态的一致镜像。 你可以使用 Savepoint 进行 Flink 作业的停止与重启、fork 或者更新。 Savepoint 由两部分组成:稳定存储(列入 HDFS,S3,…) 上包含二进制文件的目录(通常很大),和元数据文件(相对较小)。 稳定存储上的文件表示作业执行状态的数据镜像。 Savepoint 的元数据文件以(相对路径)的形式包含(主要)指向作为 Savepoint 一部分的稳定存储上的所有文件的指针。

    2. 操作 Savepoint

    2.1 触发 Savepoint

    $ bin/flink savepoint :jobId [:targetDirectory]
    
    • 1

    这将触发 ID 为 :jobId 的作业的 Savepoint,并返回创建的 Savepoint 路径。 你需要此路径来恢复和删除 Savepoint 。你也可以指定创建 Savepoint 的格式。如果没有指定,会采用标准格式创建 Savepoint。

    $ bin/flink savepoint --type [native/canonical] :jobId [:targetDirectory]
    
    • 1

    2.2 使用 YARN 触发 Savepoint

    $ bin/flink savepoint :jobId [:targetDirectory] -yid :yarnAppId
    
    • 1

    这将触发 ID 为 :jobId 和 YARN 应用程序 ID :yarnAppId 的作业的 Savepoint,并返回创建的 Savepoint 的路径。

    2.3 使用 Savepoint 停止作业

    $ bin/flink stop --type [native/canonical] --savepointPath [:targetDirectory] :jobId
    
    • 1

    这将自动触发 ID 为 :jobid 的作业的 Savepoint,并停止该作业。此外,你可以指定一个目标文件系统目录来存储 Savepoint 。该目录需要能被 JobManager(s) 和 TaskManager(s) 访问。你也可以指定创建 Savepoint 的格式。如果没有指定,会采用标准格式创建 Savepoint。

    2.4 从 Savepoint 恢复

    $ bin/flink run -s :savepointPath [:runArgs]
    
    • 1

    这将提交作业并指定要从中恢复的 Savepoint 。 你可以给出 Savepoint 目录或 _metadata 文件的路径。

    2.5 删除 Savepoint

    $ bin/flink savepoint -d :savepointPath
    
    • 1

    这将删除存储在 :savepointPath 中的 Savepoint。

    请注意,还可以通过常规文件系统操作手动删除 Savepoint ,而不会影响其他 Savepoint 或 Checkpoint(请记住,每个 Savepoint 都是自包含的)。 在 Flink 1.2 之前,使用上面的 Savepoint 命令执行是一个更乏味的任务。

    3. 配置 Savepoint 存储位置

    你可以通过 state.savepoints.dir 配置 savepoint 的默认目录。 触发 savepoint 时,将使用此目录来存储 savepoint。
    默认 Savepoint 目标目录
    state.savepoints.dir: hdfs:///flink/savepoints

    4. 实操案例

    4.1 提交应用

    $ flink run --class com.daidai.watermarks.AllowedLateness ./Flink1.13_Java-1.0-SNAPSHOT.jar 
    
    • 1

    4.2 触发 Savepoint

    $ flink savepoint fbc0bdfb2ee5806c931dd8158868b573 hdfs://daidai:8020/flink_savepoint
    
    • 1

    4.3 停止应用

    $ flink cancel fbc0bdfb2ee5806c931dd8158868b573 
    
    • 1

    4.4 从 Savepoint 恢复

    $ flink run -s hdfs://daidai:8020/flink_savepoint/savepoint702b87-0a11b997fa70 --class com.daidai.watermarks.AllowedLateness  ./Flink1.13_Java-1.0-SNAPSHOT.jar 
    
    • 1
  • 相关阅读:
    【vr】【unity】白马VR课堂系列-VR开发核心基础05-主体设置-手柄对象的引入和设置
    Text2SQL之不装了,我也是RAG
    CI2454集成2.4G收发SOC【遥控;灯具;玩具】技术开发资料
    STM32CubeMX教程21 CAN - 双机通信
    “豫”见超融合,私有云浪潮开启新一线
    Dubbo 之 线程池
    ssh宿舍管理系统
    springboot集成mapstruct快速上手使用【实现DTO和实体间的相互转换】
    5年测试经验之谈:2年功能测试、3年自动化测试,从入门到25k...
    linux安装mongodb及springboot增删查实现
  • 原文地址:https://blog.csdn.net/weixin_46376562/article/details/125623632