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. 调优参数按现象上:先保证可用稳定,再逐步做性能调参(并发、超时、重试、分片等)
相关推荐
朗心心理5 小时前
朗心科技:以数智化引领心理健康服务新标杆
大数据·人工智能·科技·心理健康·朗心科技·数智化心理育人·一站式心理中心建设
无忧智库6 小时前
破局与重构:大型集团化协同管理平台的全景式深度解构(PPT)
大数据
码云数智-大飞7 小时前
进程、线程与协程:并发模型的演进与 Go 语言的 GMP 革命
大数据
XiaoMu_0018 小时前
基于大数据的糖尿病数据分析可视化
大数据·数据挖掘·数据分析
阿里云大数据AI技术8 小时前
Celeborn 如何让 EMR Serverless Spark 的 Shuffle 舒心、放心、安心
大数据·spark
AI营销快线8 小时前
AI营销获客难?原圈科技深度解析SaaS系统增长之道
大数据·人工智能
星幻元宇VR9 小时前
VR环保学习机|科技助力绿色教育新模式
大数据·科技·学习·安全·vr·虚拟现实
CryptoPP10 小时前
开发者指南:构建实时期货黄金数据监控系统
大数据·数据结构·笔记·金融·区块链
ZGi.ai11 小时前
生产级 Agent 编排 从单一 LLM 调用到多智能体工作流的工程设计
大数据·数据库·人工智能
木斯佳11 小时前
前端八股文面经大全:阿里云AI应用开发一面(2026-03-20)·面经深度解析
前端·人工智能·阿里云·ai·智能体·流式打印