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. 调优参数按现象上:先保证可用稳定,再逐步做性能调参(并发、超时、重试、分片等)
相关推荐
盟接之桥2 分钟前
盟接之桥®制造业EDI软件:连接全球供应链的“数字桥梁”,赋能中国制造走向世界
大数据·网络·人工智能·汽车·制造
lifallen32 分钟前
一篇文章讲透 Flink State
大数据·数据库·python·flink
AI先驱体验官1 小时前
臻灵:数字人形象驱动新突破,NVIDIA开源PersonaPlex带来的技术变局
大数据·人工智能·深度学习·重构·开源·aigc
鸿蒙程序媛1 小时前
【工具汇总】git 常用命令行汇总
大数据·git·elasticsearch
csgo打的菜又爱玩1 小时前
3.HAService启动流程解析
flink
人工智能培训1 小时前
如何将高层任务分解为可执行的动作序列?
大数据·人工智能·算法·机器学习·知识图谱
Project_Observer1 小时前
列表视图中的筛选列
大数据·数据库·深度学习·机器学习·深度优先
紧固视界1 小时前
汽车紧固件最新技术趋势解析:2026上海紧固件专业展有哪些看点
大数据·人工智能·汽车·紧固件·上海紧固件展·上海紧固件专业展
刘佬GEO1 小时前
本地门店做 GEO 的起步顺序:第一步先做什么?
大数据·网络·人工智能·搜索引擎·ai
上海蓝色星球2 小时前
流程标准化・作业一体化|蓝色星球造价机器人,以全流程线上化破解造价咨询管理困局
大数据·人工智能