You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Flink checkpoint写入Azure Storage时报No credentials found错误

问题根因

你遇到的JobManager可创建存储目录/空文件、TaskManager写checkpoint数据报错、块Blob大小为0B的现象,核心原因是仅JobManager进程加载到了Azure存储的访问密钥,TaskManager进程未拿到对应认证配置。以下是具体排查修复步骤:

修复方案

1. 移除无效的代码内配置

代码中调用的FileSystem.initialize(cfg, null)仅对当前执行的JVM进程生效,部署到Kubernetes集群后,JobManager、TaskManager分别运行在独立Pod的独立JVM中,TaskManager不会执行这段初始化逻辑,反而会带来硬编码密钥的安全风险,直接删除该段配置即可。

你提供的yaml存在语法错误,修正后的配置如下:

# 修正语法错误,原state:backend: rocksdb不符合yaml规范
state.backend: rocksdb
state.checkpoints.dir: wasbs://<container>@<storage-account>.blob.core.windows.net/checkpoint/
# 只保留实际使用的存储账号的密钥配置,删除多余的flinkstorage相关配置避免干扰
fs.azure.account.key.<storage-account>.blob.core.windows.net: <你的存储账号访问密钥>

必须将上述配置传递到所有JobManager、TaskManager Pod的加载路径中:

  • 若使用Flink Kubernetes Operator部署:将上述配置写入CR资源的flinkConfiguration字段,Operator会自动同步到所有Pod的配置文件
  • 若使用原生Kubernetes资源部署:将配置写入ConfigMap,挂载到所有Pod的/opt/flink/conf/flink-conf.yaml路径,确保flink运行用户有读取权限

4. 依赖校验

确认Flink集群的/opt/flink/plugins目录下已放置对应版本的flink-azure-fs-hadoop插件,未同时引入冲突的hadoop-azure相关依赖。

5. 可选更安全的认证方案(符合企业安全规范)

如果公司允许使用Azure Managed Identity,可避免硬编码访问密钥:

  • 为Flink Pod绑定的服务账号授予存储账号的「存储Blob数据贡献者」角色
  • 替换密钥配置为如下内容即可:
fs.azure.account.auth.type: OAuth
fs.azure.account.oauth.provider.type: org.apache.hadoop.fs.azurebfs.oauth2.ManagedIdentityTokenProvider

内容的提问来源于stack exchange,提问作者Koman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:18:02