Azure Blob 文件系统驱动程序 (ABFS):Hadoop 专用Azure 存储驱动程序

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

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

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

ABFS 的工作原理

Azure Data Lake Storage REST 接口支持基于 Azure Blob 存储 的文件系统语义。 鉴于 Hadoop 文件系统还旨在支持相同的语义,因此无需在驱动程序中执行复杂的映射。 因此,Azure Blob 文件系统驱动程序(简称 ABFS)仅仅是 REST API 的一个客户端适配层。

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

引用数据的 URI 方案

与 Hadoop 中的其他文件系统实现一致,ABFS 驱动程序定义了自己的 URI 方案,以便可以明显地处理资源(目录和文件)。 URI 方案记录在使用 Azure Data Lake Storage URI 中。 URI 的结构为: abfs[s]://file_system@account_name.dfs.core.chinacloudapi.cn/<path>/<path>/<file_name>,其中 abfss:// 使用 TLS 进行加密连接。

使用此 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帐户中包含的资源。 身份验证需要启用了分层命名空间的存储帐户。 有关可用身份验证方案的完整详细信息,请参阅Azure 存储安全指南。 支持的身份验证方案包括:

  • 共享密钥: 此身份验证方法授予用户对帐户中所有资源的访问权限。 密钥已加密并存储在 Hadoop 配置中。

  • Microsoft Entra ID OAuth 持有者令牌:驱动程序通过使用最终用户标识或配置的服务主体来获取和刷新Microsoft Entra持有者令牌。 使用此身份验证模型时,您将使用与所提供令牌关联的身份,对每次调用分别进行访问授权,并根据已分配的 POSIX 访问控制列表 (ACL) 对该身份进行评估。

    注意

    Azure Data Lake Storage支持Microsoft Entra ID OAuth 2.0 身份验证。

配置

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

有关所有受支持的配置条目的详细信息,请参阅 官方 Hadoop 文档

后续步骤