Azure Blob Filesystem 驱动程序 (ABFS):专用于 Hadoop 的 Azure 存储驱动程序

要访问 Azure Data Lake Storage Gen2 中的数据,一种主要方式是通过 Hadoop FileSystem。 Data Lake Storage Gen2 允许 Azure Blob 存储的用户访问新驱动程序、Azure Blob 文件系统驱动程序或 ABFS。 ABFS 是 Apache Hadoop 的一部分,Hadoop 的许多商业分发均带有此程序。 借助 ABFS 驱动程序,许多应用程序和框架无需显式引用 Data Lake Storage Gen2 的任何代码,即可访问 Azure Blob 存储中的数据。

以前的功能:Windows Azure 存储 Blob 驱动程序

Windows Azure 存储 Blob 驱动程序或 WASB 驱动程序提供了对 Azure Blob 存储的原始支持。 此驱动程序执行复杂任务,即将文件系统语义(根据 Hadoop FileSystem 接口的要求)映射到 Azure Blob 存储公开的对象存储样式接口的语义中。 此驱动程序继续支持此模型,提供对 Blob 中存储的数据的高性能访问,但包含大量执行此映射的代码,因此很难维护。 此外,由于对象存储缺少对目录的支持,某些操作(如 FileSystem.rename()FileSystem.delete())在应用到目录时需要驱动程序执行大量操作,这通常导致性能下降。 ABFS 驱动程序旨在克服 WASB 的固有缺陷。

Azure Blob 文件系统驱动程序

Azure Data Lake Storage REST 接口旨在支持 Azure Blob 存储的文件系统语义。 考虑到 Hadoop 文件系统的目的也是支持这些语义,因此无需在驱动程序中进行复杂的映射。 这样,Azure Blob 文件系统驱动程序 (ABFS) 仅作为 REST API 的客户端填充码。

但是,驱动程序仍然必须执行一些功能:

引用数据的 URI 方案

与 Hadoop 中的其他文件系统实现一样,ABFS 驱动程序自行定义 URI 方案,让资源(目录和文件)能够得到明确处理。 如需了解 URI 方案,请参阅使用 Azure Data Lake Storage Gen2 URI。 URI 的结构是 abfs[s]://file_system@account_name.dfs.core.chinacloudapi.cn/<path>/<path>/<file_name>

通过使用此 URI 格式,标准 Hadoop 工具和框架可引用这些资源:

hdfs dfs -mkdir -p abfs://fileanalysis@myanalytics.dfs.core.chinacloudapi.cn/tutorials/flightdelays/data 
hdfs dfs -put flight_delays.csv abfs://fileanalysis@myanalytics.dfs.core.chinacloudapi.cn/tutorials/flightdelays/data/ 

ABFS 驱动程序在内部将 URI 中指定的资源转换为文件和目录,并使用这些引用调用 Azure Data Lake Storage REST API。

身份验证

ABFS 驱动程序支持两种形式的身份验证,以便 Hadoop 应用程序可以安全地访问支持 Data Lake Storage Gen2 的帐户中包含的资源。 Azure 存储安全指南中提供了可用身份验证方案的完整详细信息。 它们是:

  • 共享密钥:这允许用户访问帐户中的所有资源。 密钥被加密并存储在 Hadoop 配置中。

  • Microsoft Entra ID OAuth 持有者令牌:驱动程序使用最终用户或所配置的某个服务主体的标识获取和刷新 Microsoft Entra 持有者令牌。 使用此身份验证模型时,所有访问都是使用与所提供的令牌关联的标识以调用为单位进行授权的,并且依据所分配的 POSIX 访问控制列表 (ACL) 进行评估。

    注意

    Azure Data Lake Storage Gen2 仅支持 Azure AD v1.0 终结点。

Configuration

ABFS 驱动程序的所有配置均存储在 core-site.xml 配置文件中。 在带有 Ambari 的 Hadoop 分发上,还可使用 Web 门户或 Ambari REST API 管理配置。

要详细了解所有受支持的配置条目,请参阅官方 Hadoop 文档

Hadoop 文档

要完整了解 ABFS 驱动程序,请参阅官方 Hadoop 文档

后续步骤