【大数据面试题】001 Flink 的 Checkpoint 原理

一步一个脚印,一天一道大数据面试题。

Flink 是大数据实时处理计算框架。实时框架对检查点,错误恢复的功能要比离线的更复杂,所以一起来了解 Flink 的 Checkpoint 机制吧。

Checkpoint 机制

触发 Checkpoint

通过设置时间或数据量阈值来触发 Checkpoint

生成 Barrier 屏障,写入快照

Flink 触发 Checkpoint 后,会从数据源 Source 算子开始分发 Barrier,算子收到后便开始停止处理数据,将目前的状态写入快照。

分发 Barrier 至下游

分发 Barrier 到下游算子,各个算子生成快照。直至所有算子完成写入 Checkpoint,Checkpoint 写入完成。

检查点恢复

恢复时,分为两部分。

1.从 Checkpoint 恢复数据,这部分数据是 Barrier 之前的数据和操作。

2.继续处理 Barrier 之后的数据。

代码演示

下面是一个 Java 版 Flink 算子 demo

java 复制代码
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.CheckpointingMode;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class FlinkCheckpointExample {

    public static void main(String[] args) throws Exception {
        // 设置执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 从命令行参数获取输入路径和输出路径
        ParameterTool params = ParameterTool.fromArgs(args);
        String inputPath = params.get("input");
        String outputPath = params.get("output");

        // 开启 Checkpoint,并设置 Checkpoint 间隔
        env.enableCheckpointing(5 * 1000); // 每 5 秒触发一次 Checkpoint

        // 设置 Checkpoint 模式为 EXACTLY_ONCE(精确一次语义)
        env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);

        // 创建数据流
        DataStream<String> dataStream = env.readTextFile(inputPath);

        // 对数据进行简单处理
        DataStream<Integer> resultStream = dataStream.map(value -> Integer.parseInt(value) * 2);

        // 输出结果到控制台
        resultStream.print();

        // 将结果写入文件
        resultStream.writeAsText(outputPath);

        // 执行任务
        env.execute("Flink Checkpoint Example");
    }
}
相关推荐
数字新视界4 小时前
信创动环监控在机房环境管理中的智能化应用与实践分析
大数据·人工智能·物联网·信息与通信·动环监控系统
大大大大晴天8 小时前
数仓分层架构设计:ODS、DWD、DWS、ADS、DIM 如何各司其职
大数据
东鸿电子Eastron15 小时前
工厂节能降本落地指南:从精准能源计量搭建数字化管理基础
大数据·人工智能·能源·智能电表·能耗管理
吾AI科技15 小时前
基于Tez引擎的 Hive SQL 性能优化 —— 为什么脚本运行越来越慢
大数据·hive·性能优化·tez
P1Browser1 天前
账号触发平台安全审核?拆解标准申诉流程与材料清单
大数据·人工智能·安全·多账号管理·指纹浏览器·账户安全·运营合规
云南新人和数采集团2 天前
云南靠谱软件开发公司选型指南:以昆明新腾科技为例
大数据·人工智能·科技
AllData公司负责人2 天前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
wno7042 天前
常用的Git命令清单
大数据·git·elasticsearch
YIN_尹2 天前
【git原理与使用】git基本操作及底层原理(二)
大数据·git·elasticsearch
武子康2 天前
H3-World 写了 CPU offload,为什么还不能保证塞进 48GB?
大数据·人工智能·深度学习