Flink 对接阿里云 OSS(Object Storage Service)读写、Checkpoint、插件安装与配置模板

1、OSS URI 规则与常见使用场景

在 Flink 中访问 OSS 的路径格式:

  • oss://<your-bucket>/<object-name>

这里的 <object-name> 既可以是文件,也可以是目录前缀(类似路径)。

常用场景

  • FileSource 从 OSS 读文件/目录
  • FileSink 写入 OSS
  • Checkpoint/Savepoint 存 OSS(生产常用,尤其云上)
  • HA 元数据目录、EmbeddedRocksDBStateBackend 等(只要接受 FileSystem URI)

2、代码示例:读、写、Checkpoint 放 OSS

2.1 从 OSS 读取(FileSource)

java 复制代码
FileSource<String> fileSource = FileSource.forRecordStreamFormat(
        new TextLineInputFormat(),
        new Path("oss://<your-bucket>/<object-name>")
).build();

env.fromSource(
    fileSource,
    WatermarkStrategy.noWatermarks(),
    "oss-input"
);

2.2 写入 OSS(FileSink)

java 复制代码
stream.sinkTo(
    FileSink.forRowFormat(
        new Path("oss://<your-bucket>/<object-name>"),
        new SimpleStringEncoder<String>()
    ).build()
);

2.3 使用 OSS 作为 Checkpoint Storage

java 复制代码
Configuration config = new Configuration();
config.set(CheckpointingOptions.CHECKPOINT_STORAGE, "filesystem");
config.set(CheckpointingOptions.CHECKPOINTS_DIRECTORY, "oss://<your-bucket>/<object-name>");
env.configure(config);

Flink 提供 flink-oss-fs-hadoop 插件对接 OSS:

  • scheme:oss://
  • 插件会注册 oss:// 的默认 FileSystem wrapper
  • 以 shaded 方式提供(便于开箱即用,减少依赖冲突)

3.1 安装方式(plugins 目录)

启动 Flink 前把 JAR 从 opt 拷贝到 plugins

bash 复制代码
mkdir ./plugins/oss-fs-hadoop
cp ./opt/flink-oss-fs-hadoop-2.2.0.jar ./plugins/oss-fs-hadoop/

提示:插件目录建议"一插件一子目录",后期排查 classpath/加载问题更清晰。

为了易用,OSS 插件允许你在 flink-conf.yaml 里直接使用 Hadoop OSS 的配置键(与 core-site.xml 同体系)。完整可用键可参考 Hadoop OSS 文档;其中有 3 个是必填项,其它多为高级调优项。

4.1 必填配置项(最小可用集)

yaml 复制代码
fs.oss.endpoint: <your-oss-endpoint>
fs.oss.accessKeyId: <your-access-key-id>
fs.oss.accessKeySecret: <your-access-key-secret>

说明:

  • fs.oss.endpoint:你要连接的 OSS endpoint(和 region/内外网域名相关)
  • accessKeyId/accessKeySecret:AK/SK(注意保护,不要明文散落)

生产建议:把这些配置下发到集群配置中心或用加密/挂载方式注入,避免写进镜像或代码库。

5、更安全的凭证方式:CredentialsProvider(推荐)

除了直接在配置里写 AK/SK,你还可以指定凭证提供器(CredentialsProvider),把密钥放在环境变量等更安全的载体里。

示例:从环境变量 OSS_ACCESS_KEY_IDOSS_ACCESS_KEY_SECRET 读取:

yaml 复制代码
fs.oss.credentials.provider: com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider

这种方式的好处:

  • 避免 AK/SK 明文出现在 flink-conf.yaml
  • 更适合 K8s(Secret 注入为 env)或 YARN(container env)等部署方式
  • 便于轮换密钥(更新环境变量即可)

文档也提到还有其他 credential provider,可按你们的安全体系选择(如实例角色/STS 等,取决于你们运行环境的能力与合规要求)。

6、生产落地 checklist(少走弯路)

  1. 先装插件再启动集群:plugins 目录的 jar 需要在 JobManager/TaskManager 启动前就位
  2. 路径显式写 oss://:避免 default-scheme 影响路径归属
  3. 凭证优先用 provider:尽量别把 AK/SK 明文写配置
  4. checkpoint 目录分层 :例如 oss://bucket/checkpoints/<cluster>/<job>/,避免不同作业互相污染
  5. 调优参数按现象上:先保证可用稳定,再逐步做性能调参(并发、超时、重试、分片等)
相关推荐
Lansonli13 小时前
大数据Spark(八十):Action行动算子fold和aggregate使用案例
大数据·分布式·spark
dixiuapp13 小时前
学校后勤报修系统哪个好,如何选择
大数据·人工智能·工单管理系统·院校工单管理系统·物业报修系统
翼龙云_cloud14 小时前
阿里云渠道商:阿里云 ECS 从安全组到云防火墙的实战防护指南
安全·阿里云·云计算
江瀚视野14 小时前
多家银行向甲骨文断贷,巨头甲骨文这是怎么了?
大数据·人工智能
asheuojj14 小时前
2026年GEO优化获客效果评估指南:如何精准衡量TOP5关
大数据·人工智能·python
callJJ14 小时前
Spring AI ImageModel 完全指南:用 OpenAI DALL-E 生成图像
大数据·人工智能·spring·openai·springai·图像模型
SAP工博科技14 小时前
SAP 公有云 ERP 多工厂多生产线数据统一管理技术实现解析
大数据·运维·人工智能
星辰_mya14 小时前
Elasticsearch线上问题之OOM
大数据·elasticsearch·搜索引擎
忆~遂愿14 小时前
Runtime 上下文管理:计算实例的生命周期、延迟最小化与上下文切换优化
java·大数据·开发语言·人工智能·docker