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 文档。