首页 > 解决方案 > Databricks 中的 ABFS 驱动程序如何读取 Azure Data Lake 中的 blob?

问题描述

我正在使用 Databricks 通过 ABFS 驱动程序访问 Azure Data Lake Gen2 中的数据。我想验证我对这是如何在幕后工作的理解。

文档中:

Hadoop 兼容访问:Data Lake Storage Gen2 允许您像使用 Hadoop 分布式文件系统 (HDFS) 一样管理和访问数据。新的 ABFS 驱动程序(用于访问数据)在所有 Apache Hadoop 环境中都可用。这些环境包括 Azure HDInsight、Azure Databricks 和 Azure Synapse Analytics。

我理解这意味着 ABFS 驱动程序并行读取位于 ADLS 中的多个 blob 块。这提供了更高的性能,与传统的文件系统相比,您会受到单个文件 I/O 的限制。

我在解释这是如何正常工作的吗?

标签: hadoopdatabricksazure-databricksazure-data-lakeazure-data-lake-gen2

解决方案


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

(1)文件系统。ADLS Gen2 存在术语差异。容器(来自 blob 存储)的概念在 ADLS Gen2 中称为文件系统。

(2)分层命名空间。分层命名空间 (HNS) 与 DFS 端点相结合,可以提高性能和安全性。

(3) DFS 端点和文件系统驱动程序。ADLS Gen2 利用 ABFS 驱动程序,它是 Apache Hadoop 的一部分。对于与 ADLS Gen2 的连接,ABFS 驱动程序利用 DFS 端点来调用性能和安全优化。

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

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

分层文件系统模型(ADLS Gen1 和 Gen2)与 HDFS(Hadoop 分布式文件系统)兼容。这是通过实现服务器端 HDFS 语义以转换为远程存储 API 的驱动程序实现的,从而允许 ADLS Gen2 的行为与本机 HDFS 非常相似。ABFS 驱动程序的特点:-

(1)查询性能。当发送仅检索数据子集的查询时,使用像 ADLS Gen2 这样的分层文件系统,可以利用分区扫描进行数据修剪(谓词下推)。对于了解如何利用分区扫描的计算引擎,这可以显着提高查询性能。

(2)数据加载性能。有时需要重命名文件或将文件从一个目录重新定位到另一个目录。使用对象存储驱动程序,目录操作的处理效率不高。如果下图中显示的 Temp 目录包含 10,000 个文件,则将它们重定位到其永久目录将涉及 10,000 次重命名操作和 10,000 次删除操作,从而导致 20,000 次调用。

相反,对于像 ADLS Gen2 这样的文件系统,当通过 DFS 端点连接时,这是一个仅限元数据的操作。这会显着提高数据加载的性能,尤其是在数据量较大的情况下。除了提高查询性能外,仅元数据操作最终更具成本效益,因为需要更少的计算引擎资源。

(3)通过原子操作实现数据一致性。例如,如果要移动 10,000 个文件,则对象存储驱动程序不支持原子操作。如果发生故障,数据可能会保持不一致的状态。

相反,像 ADLS Gen2 这样的文件系统确实通过 DFS 端点支持原子操作,这提高了数据一致性,因为整个操作将作为一个单元成功或失败。

有关更多详细信息,请遵循 - Azure Blob 文件系统驱动程序 (ABFS):Hadoop 的专用 Azure 存储驱动程序

另请参阅 -关于 azure data Lake Storage gen2 的须知


推荐阅读