以存储帐户作为数据层的 Azure Databricks
Azure Databricks with Storage Account as data layer
我刚刚开始进行数据分析,需要使用 Azure Databricks 分析大量数据。在计划使用 Databricks notebook 进行分析时,我遇到了不同的存储选项来加载数据 a) DBFS - Databricks 的默认文件系统 b) Azure Data Lake (ADLS) 和 c) Azure Blob 存储。看起来项目 (b) 和 (c) 可以安装到工作区中以检索我们分析的数据。
有了以上的理解,请问下面的问题能不能解释清楚?
- 在 Databricks 上下文中使用这些存储选项时,它们之间有什么区别? DBFS 和 ADLS 是否在幕后结合了 HDFS 的文件管理原则,例如将文件分成块、名称节点、数据节点等?
- 如果我装载 Azure Blob 存储容器来分析数据,我是否仍能获得与其他存储选项相同的性能?考虑到 blob 存储是基于对象的存储,它是否仍然将文件分成块并将这些块作为 RDD 分区加载到 Spark 执行器节点中?
DBFS 只是可扩展对象存储之上的抽象,例如 AWS 上的 S3、Azure 上的 ADLS、Google GCP 上的存储。
默认情况下,当您创建工作区时,您会获得一个 DBFS 实例 - 所谓的 DBFS Root。另外,您可以在 /mnt
文件夹下安装其他存储帐户。写入挂载点路径 (/mnt
) 的数据存储在 DBFS 根之外。尽管 DBFS 根是可写的,但建议您将数据存储在挂载的对象存储中,而不是 DBFS 根中。 DBFS root 不适用于生产客户数据,因为存在限制,例如缺乏访问控制,您无法访问在工作区之外安装为 DBFS Root 的存储帐户等。
存储服务(如名称节点等)的实际实现实际上是抽象的 - 您使用与 HDFS 兼容的 API,但在幕后实现将根据云和存储风格而有所不同。对于 Azure,您可以在 this blog post.
中找到有关其实施的一些详细信息
关于第二个问题 - 是的,您仍然应该将文件拆分成块等。Blob 存储和数据湖存储之间存在差异,尤其是对于具有更好安全模型并且可能优化得更好的 ADLS Gen 2适用于大数据工作负载。 This blog post描述了它们之间的区别。
我刚刚开始进行数据分析,需要使用 Azure Databricks 分析大量数据。在计划使用 Databricks notebook 进行分析时,我遇到了不同的存储选项来加载数据 a) DBFS - Databricks 的默认文件系统 b) Azure Data Lake (ADLS) 和 c) Azure Blob 存储。看起来项目 (b) 和 (c) 可以安装到工作区中以检索我们分析的数据。
有了以上的理解,请问下面的问题能不能解释清楚?
- 在 Databricks 上下文中使用这些存储选项时,它们之间有什么区别? DBFS 和 ADLS 是否在幕后结合了 HDFS 的文件管理原则,例如将文件分成块、名称节点、数据节点等?
- 如果我装载 Azure Blob 存储容器来分析数据,我是否仍能获得与其他存储选项相同的性能?考虑到 blob 存储是基于对象的存储,它是否仍然将文件分成块并将这些块作为 RDD 分区加载到 Spark 执行器节点中?
DBFS 只是可扩展对象存储之上的抽象,例如 AWS 上的 S3、Azure 上的 ADLS、Google GCP 上的存储。
默认情况下,当您创建工作区时,您会获得一个 DBFS 实例 - 所谓的 DBFS Root。另外,您可以在 /mnt
文件夹下安装其他存储帐户。写入挂载点路径 (/mnt
) 的数据存储在 DBFS 根之外。尽管 DBFS 根是可写的,但建议您将数据存储在挂载的对象存储中,而不是 DBFS 根中。 DBFS root 不适用于生产客户数据,因为存在限制,例如缺乏访问控制,您无法访问在工作区之外安装为 DBFS Root 的存储帐户等。
存储服务(如名称节点等)的实际实现实际上是抽象的 - 您使用与 HDFS 兼容的 API,但在幕后实现将根据云和存储风格而有所不同。对于 Azure,您可以在 this blog post.
中找到有关其实施的一些详细信息关于第二个问题 - 是的,您仍然应该将文件拆分成块等。Blob 存储和数据湖存储之间存在差异,尤其是对于具有更好安全模型并且可能优化得更好的 ADLS Gen 2适用于大数据工作负载。 This blog post描述了它们之间的区别。