【问题标题】:Azure Databricks with Storage Account as data layer使用存储帐户作为数据层的 Azure Databricks
【发布时间】:2021-08-14 20:41:18
【问题描述】:

我刚刚开始进行需要使用 Azure Databricks 分析大量数据的数据分析。在计划使用 Databricks 笔记本进行分析时,我遇到了不同的存储选项来加载数据 a) DBFS - Databricks 的默认文件系统 b) Azure Data Lake (ADLS ) 和 c) Azure Blob 存储。看起来项目 (b) 和 (c) 可以安装到工作区中以检索数据以供我们分析。

了解了以上内容,请问以下问题可以澄清吗?

  1. 在 Databricks 上下文中使用这些存储选项时,它们之间有什么区别? DBFS 和 ADLS 是否包含 HDFS 的文件管理原则,例如将文件分成块、名称节点、数据节点等?
  2. 如果我装载 Azure Blob 存储容器来分析数据,我是否仍能获得与其他存储选项相同的性能?鉴于 Blob 存储是基于对象的存储,它是否仍将文件分成块并将这些块作为 RDD 分区加载到 Spark 执行器节点中?

【问题讨论】:

    标签: azure databricks azure-databricks


    【解决方案1】:

    DBFS 只是对可扩展对象存储(如 AWS 上的 S3、Azure 上的 ADLS、GCP 上的 Google 存储)的抽象。

    默认情况下,当您创建工作空间时,您会获得一个 DBFS 实例 - 即所谓的DBFS Root。此外,您还可以在 /mnt 文件夹下挂载其他存储帐户。写入挂载点路径 (/mnt) 的数据存储在 DBFS 根目录之外。尽管 DBFS 根是可写的,但建议您将数据存储在挂载的对象存储中,而不是存储在 DBFS 根中。 DBFS 根不适用于生产客户数据,因为存在一些限制,例如缺乏访问控制、您无法访问作为 DBFS 根安装在工作区之外的存储帐户等。

    存储服务(如名称节点等)的实际实现实际上已经被抽象掉了——您使用的是与 HDFS 兼容的 API,但在底层实现会根据云和存储的风格而有所不同。对于 Azure,您可以在 this blog post 中找到有关其实施的一些详细信息。

    关于第二个问题 - 是的,您仍然应该将文件拆分为块等。Blob Storage 和 Data Lake Storage 之间存在差异,特别是对于 ADLS Gen 2,它们具有更好的安全模型并且可能更好地针对大型数据工作负载。 This blog post 描述了它们之间的差异。

    【讨论】:

    • 太好了,谢谢亚历克斯。后续问题 1)如果挂载了ADLS或Storage account,只有挂载点存储在DBFS根目录(/mnt/)下,建议将DBFS根目录外的数据保存在挂载的源中? 2) 您无法访问在工作区之外作为 DBFS Root 安装的存储帐户 - 它指的是什么?
    • 1) 是的,最好将所有数据放入已挂载的存储中。仅将 DBFS 根用于临时文件、库等。 2)这意味着 - 用作 DBFS 根的存储由 Databricks 管理,因此您不能向人员等授予显式权限。您只能从在 Databricks 工作区中。如果您删除 Databricks 工作区,它就会消失
    猜你喜欢
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2017-06-28
    相关资源
    最近更新 更多