博客
关于我
Flink CheckPoint状态点恢复与savePoint机制
阅读量:798 次
发布时间:2023-04-02

本文共 1970 字,大约阅读时间需要 6 分钟。

Flink CheckPoint 状态点恢复与SavePoint机制

Flink 是一个流处理框架,拥有强大的状态管理功能,其中 CheckPoint 和 SavePoint 是两个核心机制。它们能够有效地帮助用户管理流处理程序的状态,实现状态点的保存与恢复,从而提升系统的可用性和容错能力。本文将详细介绍这两个机制的工作原理及其应用方法。


在实际使用 Flink 前,需要先启动 Flink 应用程序。以下是一个典型的启动命令示例:

./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024

其中,参数 -c 用于指定主类路径,-port 用于指定端口号。完整命令如下:

./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -c streaming.SoetWindowWordCountJavaCheckPoint -port 9010

此外,若需要运行带依赖的 JAR 文件,请指定路径:

/usr/local/install/testJar/FlinkExample-1.0-SNAPSHOT-jar-with-dependencies.jar

2. CheckPoint 保存与恢复

2.1 CheckPoint 设置与保存

默认情况下,Flink 会保留最近成功生成的一个 CheckPoint。如果程序失败,Flink 会自动从最近的 CheckPoint 恢复。但有时,我们可能需要保留多个 CheckPoint,以便在需要时选择特定的恢复点。要实现这一功能,需在配置文件中设置如下参数:

state.checkpoints.dir: hdfs://namenode:9000/flink/checkpoints

这样,CheckPoint 会被存储在指定的 HDFS 目录下。查看存储的 CheckPoint 可执行以下命令:

hdfs dfs -ls hdfs://namenode:9000/flink/checkpoints

2.2 CheckPoint 恢复

如果程序在运行过程中出现故障,我们可以通过指定特定的 CheckPoint 路径来恢复。恢复命令如下:

bin/flink run -s hdfs://namenode:9000/flink/checkpoints/467e17d2cc343e6c56255d222bae3421/chk-56/_metadata flink-job.jar

运行后,程序会从指定的 CheckPoint 继续执行。需要注意的是,程序在恢复后会继续生成新的 CheckPoint,确保数据处理不中断。


3. SavePoint剖析

3.1 全局一致性快照

SavePoint 功能的核心在于实现程序的无中断升级。通过 SavePoint,可以保存数据源的偏移量、算子状态等信息,从而在程序升级或重新启动时,能够从指定的点继续处理。SavePoint 提供了两种触发方式:定期触发和手动触发。

3.2 CheckPoint 与 SavePoint 的区别

  • CheckPoint:由程序自动触发,用于保存临时状态,且会过期。
  • SavePoint:由用户手动触发,指向特定的状态点,且不会过期。

3.3 SavePoint 的使用

在实际应用中,SavePoint 的使用场景包括:

  • 程序升级:确保升级前后的状态一致。
  • 故障恢复:快速恢复到指定状态点。
  • 要手动触发 SavePoint,可执行以下命令:

    bin/flink savepoint jobId [targetDirectory] [-yid yarnAppId]

    此外,当程序需要取消运行时,可以通过以下命令恢复到最近的 SavePoint:

    bin/flink cancel -s [targetDirectory] jobId [-yid yarnAppId]

    4. 配置与注意事项

    • 配置 SavePoint 存储位置:在 flink-conf.yaml 中添加如下配置:
    state.savepoints.dir: hdfs://namenode:9000/flink/savepoints
    • 手动指定算子 ID:为了确保程序在升级后能够正确恢复,建议手动为每个算子指定唯一的 ID。

    • 依赖管理:确保程序依赖的版本与 Flink 版本兼容,避免因依赖冲突导致程序故障。


    通过合理配置和使用 CheckPoint 与 SavePoint,用户可以显著提升 Flink 程序的可用性和稳定性。在实际应用中,建议根据具体需求选择合适的恢复点,并定期备份重要数据。

    转载地址:http://zmefk.baihongyu.com/

    你可能感兴趣的文章
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
    查看>>
    OSChina 技术周刊第十期,每周技术抢先看!
    查看>>
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>
    OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
    查看>>
    osgearth介绍
    查看>>
    OSGi与Maven、Eclipse PlugIn的区别
    查看>>
    Osgi环境配置
    查看>>
    OSG——选取和拖拽
    查看>>
    OSG中找到特定节点的方法(转)
    查看>>
    OSG学习:C#调用非托管C++方法——C++/CLI
    查看>>
    OSG学习:OSG组成(三)——组成模块(续):OSG核心库中的一些类和方法
    查看>>
    OSG学习:OSG组成(二)——渲染状态和纹理映射
    查看>>
    OSG学习:WIN10系统下OSG+VS2017编译及运行
    查看>>
    OSG学习:人机交互——普通键盘事件:着火的飞机
    查看>>
    OSG学习:几何体的操作(一)——交互事件、简化几何体
    查看>>