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 存储对象可类似于普通文件使用:
// WASB unencrypted access
wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>
// WASB SSL encrypted access
wasbs://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>
// ABFS unecrypted access
abfs://<your-container>@$<your-azure-account>.dfs.core.windows.net/<object-path>
// ABFS SSL encrypted access
abfss://<your-container>@$<your-azure-account>.dfs.core.windows.net/<object-path>
参见以下代码了解如何在 Flink 作业中使用 Azure Blob 存储:
// 读取 Azure Blob 存储
env.readTextFile("wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
// 写入 Azure Blob 存储
stream.writeAsText("wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
// 将 Azure Blob 存储用作 checkpoint storage
Configuration config = new Configuration();
config.set(CheckpointingOptions.CHECKPOINT_STORAGE, "filesystem");
config.set(CheckpointingOptions.CHECKPOINTS_DIRECTORY, "wasb://<your-container>@$<your-azure-account>.blob.core.windows.net/<object-path>");
env.configure(config);
Shaded Hadoop Azure Blob 存储文件系统 #
为使用 flink-azure-fs-hadoop,在启动 Flink 之前,将对应的 JAR 文件从 opt 目录复制到 Flink 发行版中的 plugin 目录下的一个文件夹中,例如:
mkdir ./plugins/azure-fs-hadoop
cp ./opt/flink-azure-fs-hadoop-2.0-preview1.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 存储密钥:
fs.azure.account.key.<account_name>.blob.core.windows.net: <azure_storage_key>
或者通过在 Flink 配置文件 中设置以下配置键,将文件系统配置为从环境变量 AZURE_STORAGE_KEY
读取 Azure Blob 存储密钥:
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 配置文件 中配置:
fs.azure.account.key.<account_name>.dfs.core.windows.net: <azure_storage_key>