Azure Blob 存储

Azure Blob 存储 是一项由 Microsoft 管理的服务,能提供多种应用场景下的云存储。 Azure Blob 存储可与 Flink 一起使用以读取写入数据,以及与流 State Backend 结合使用。

Flink 支持使用 wasb://abfs:// 访问 Azure Blob 存储。

Azure 建议使用 abfs:// 访问 ADLS Gen2 存储帐户,尽管 wasb:// 通过向后兼容也可以工作。

abfs:// 只能用于访问 ADLS Gen2 存储帐户。 请访问Azure文档,了解如何识别 ADLS Gen2 存储帐户。

通过以下格式指定路径,Azure Blob 存储对象可类似于普通文件使用:

  1. // WASB unencrypted access
  2. wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>
  3. // WASB SSL encrypted access
  4. wasbs://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>
  5. // ABFS unecrypted access
  6. abfs://<your-container>@$<your-azure-account>.dfs.core.windows.net/<object-path>
  7. // ABFS SSL encrypted access
  8. abfss://<your-container>@$<your-azure-account>.dfs.core.windows.net/<object-path>

参见以下代码了解如何在 Flink 作业中使用 Azure Blob 存储:

  1. // 读取 Azure Blob 存储
  2. env.readTextFile("wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
  3. // 写入 Azure Blob 存储
  4. stream.writeAsText("wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
  5. // 将 Azure Blob 存储用作 checkpoint storage
  6. Configuration config = new Configuration();
  7. config.set(CheckpointingOptions.CHECKPOINT_STORAGE, "filesystem");
  8. config.set(CheckpointingOptions.CHECKPOINTS_DIRECTORY, "wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
  9. env.configure(config);

Shaded Hadoop Azure Blob 存储文件系统

为使用 flink-azure-fs-hadoop,在启动 Flink 之前,将对应的 JAR 文件从 opt 目录复制到 Flink 发行版中的 plugin 目录下的一个文件夹中,例如:

  1. mkdir ./plugins/azure-fs-hadoop
  2. cp ./opt/flink-azure-fs-hadoop-1.19.0.jar ./plugins/azure-fs-hadoop/

flink-azure-fs-hadoop 为使用 wasb://wasbs:// (SSL 加密访问) 的 URI 注册了默认的文件系统包装器。

凭据配置

WASB

Hadoop 的 WASB Azure 文件系统支持通过 Hadoop 配置来配置凭据,如 Hadoop Azure Blob Storage 文档 所述。 为方便起见,Flink 将所有的 Flink 配置添加 fs.azure 键前缀后转发至文件系统的 Hadoop 配置中。因此,可通过以下方法在 Flink 配置文件 中配置 Azure Blob 存储密钥:

  1. fs.azure.account.key.<account_name>.blob.core.windows.net: <azure_storage_key>

或者通过在 Flink 配置文件 中设置以下配置键,将文件系统配置为从环境变量 AZURE_STORAGE_KEY 读取 Azure Blob 存储密钥:

  1. fs.azure.account.keyprovider.<account_name>.blob.core.windows.net: org.apache.flink.fs.azurefs.EnvironmentVariableKeyProvider

ABFS

Hadoop 的 ABFS Azure 文件系统支持多种配置身份验证的方法。关于如何配置,请访问Hadoop ABFS文档

Azure 推荐使用 Azure 托管身份来使用 abfs 访问 ADLS Gen2 存储帐户。关于如何做到这一点的细节超出了本文档的范围,更多细节请参阅 Azure 文档。

使用存储密钥访问ABFS(不鼓励)

Azure blob 存储密钥可以通过以下方式在 Flink 配置文件 中配置:

  1. fs.azure.account.key.<account_name>.dfs.core.windows.net: <azure_storage_key>