你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Databricks 中的可靠性

Azure Databricks 是基于 Apache Spark 的协作数据和 AI 平台,针对 Microsoft Azure 进行优化。 它为大数据和 AI 工作负载提供了统一的环境,并结合了 Databricks 和 Azure 的最佳功能,以简化数据工程、数据科学和机器学习。

使用 Azure 时, 可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。

本文介绍了 Azure Databricks 如何根据各种潜在中断和问题维护复原能力,以及如何配置复原能力以满足你的要求。 本指南涵盖暂时性故障、可用性区域中断、区域中断和服务维护。 本文还介绍如何使用备份从其他问题恢复,并重点介绍有关 Azure Databricks 服务级别协议(SLA)的关键信息。

生产部署建议

若要了解如何部署 Azure Databricks 以支持解决方案的可靠性要求,以及可靠性如何影响体系结构的其他方面,请参阅 Azure Databricks 的体系结构最佳做法

可靠性体系结构概述

必须了解 Azure Databricks 中每个主要组件的可靠性:

  • 控制平面 是一组无状态服务,用于管理工作区元数据、用户访问、作业计划和群集管理。 这些服务由在受支持区域中跨可用性区域复制的数据库提供支持。

  • Databricks 文件系统(DBFS)根目录是 Azure Databricks 在您的云帐户中创建 Azure Databricks 工作区时自动预配的存储帐户。 建议不要在 DBFS 根目录上存储数据,并尽可能禁用此存储帐户。

  • Unity 目录存储 包括一个或多个存储帐户,用于在云帐户中存储 Unity 目录数据。 有关详细信息,请参阅 Unity 目录概述

  • 计算平面 使用虚拟机群集(VM)运行数据处理工作负荷。 计算平面处理暂时性故障,并自动替换失败的节点,而无需用户干预。 可以从多种类型的计算资源中进行选择。 有关详细信息,请参阅 计算

    工作区可用性取决于控制平面的可用性,但计算群集可以在控制平面中断期间继续处理作业。

暂时性故障的复原能力

暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。

与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议

可以控制 Lakeflow 作业中任务的重试,以帮助从暂时性错误中恢复。

对于在 Azure Databricks 上运行的应用程序,在连接到外部服务或 Azure 服务(例如存储、Azure SQL 数据库或 Azure 事件中心)时,使用指数退避实现重试逻辑。 Databricks Runtime 包含许多 Azure 服务的内置复原能力,但应用程序代码应处理特定于服务的暂时性故障。

应对可用区故障的弹性

可用性区域 是在物理上彼此独立的数据中心群组,位于同一个 Azure 区域内。 当某个区域发生故障时,服务可以切换到其他可用的区域。

Azure Databricks 支持每个组件的 区域冗余

  • 控制平面: 在支持可用性区域的区域中,控制平面在多个可用性区域中运行。 控制平面自动处理区域故障,影响最小,无需用户干预。

    控制平面工作区数据存储在数据库中。 在支持可用性区域的区域中,数据库将跨区域中的多个区域复制。 为 Databricks Runtime 映像提供服务的存储帐户也是区域内的冗余帐户。 所有区域都有辅助存储帐户,在主存储帐户关闭时使用。

  • DBFS 根: 在支持可用性区域的区域中,可以将 DBFS 根目录的存储帐户配置为使用区域冗余存储(ZRS)。 在支持可用性区域的配对区域中,可以选择使用异地区域冗余存储(GZRS)。

  • 计算平面: Databricks 支持计算资源的 自动区域分布 ,这意味着资源分布在多个可用性区域。 此分布有助于您的生产工作负载具备应对区域故障的复原能力。

    使用无服务器计算时,您不会显式选择计算区域。 Databricks 管理 VM 的区域选择,并替换因区域中断而可能丢失的 VM。

要求

若要在 Azure Databricks 中使用可用性区域支持,需要满足以下要求:

  • 区域支持: Azure Databricks 可用性区域支持适用于所有支持 Azure Databricks 并提供可用性区域的 Azure 区域。 有关支持 Azure Databricks 的区域的列表,请参阅 按区域可用的产品。 有关支持可用性区域的区域的完整列表,请参阅 支持可用性区域的 Azure 区域

  • 存储复制: 将工作区存储帐户配置为使用 ZRS 或 GZRS(如果有)。

  • 计算容量: 确保目标区域中多个区域存在足够的计算容量。 Azure Databricks 会自动跨区域分发群集节点,但应验证所选实例类型在所有目标区域中是否可用。

注意事项

Azure Databricks 自动跨可用性区域分发群集节点。 分发取决于每个区域中的可用容量。 在高需求时段,群集的节点可能集中在更少的区域中。 使用无服务器计算时,Azure Databricks 管理 VM 的区域选择,并替换因区域中断而丢失的 VM。

成本

区域分布不会影响计算成本,因为无论 VM 的可用性区域放置如何,你都为相同数量的 VM 付费。 有关详细信息,请参阅 Azure Databricks 计算定价

托管存储帐户或 DBFS 根的默认冗余是异地冗余存储(GRS)。 更改为 ZRS 或 GZRS 可能会影响存储成本。 有关更多信息,请参阅 Azure Blob 存储定价

配置可用性区域支持

  • 控制平面: 控制平面自动支持具有可用性区域的区域中的区域冗余。 无需配置任何内容。

  • DBFS 根: 创建新工作区或修改现有工作区时,可以为 DBFS 根存储配置区域冗余:

    • 使用区域冗余 DBFS 根存储创建新工作区: 创建新的 Azure Databricks 工作区时,可以选择将关联的存储帐户配置为使用 ZRS 或 GZRS 而不是默认 GRS。 有关详细信息,请参阅 更改工作区存储冗余选项

    • 在 DBFS 根存储上启用区域冗余: 对于现有工作区,可以将工作区存储帐户的冗余配置更改为 ZRS 或 GZRS。 有关如何启用区域冗余的详细信息,请参阅 更改存储帐户的复制设置

  • 计算平面: 群集节点自动分布在可用性区域。 区域分发不需要客户配置。

所有区域正常时的行为

本部分介绍当工作区配置有可用性区域支持且所有可用性区域都正常运行时会发生什么情况。

  • 区域之间的数据复制: 当 DBFS 根使用 ZRS 或 GZRS 帐户时,工作区存储的数据复制会跨区域同步进行。 此方法可确保在性能影响最小的情况下保持高度一致性。

  • 区域之间的流量路由: Azure Databricks 在创建群集期间自动跨区域分配群集节点。 服务在维护数据区域以获得最佳性能的同时,均衡跨区域的计算负载。

区域故障期间的行为

本节介绍在工作区配置可用区支持时以及发生可用区中断时会遇到的情况。

  • 检测和响应: Microsoft自动检测区域故障并启动响应过程。 不需要对区域级故障转移采取任何操作。

  • 通知: Microsoft不会在区域关闭时自动通知你。 但可以使用 Azure Databricks 状态页 查看所有核心 Azure Databricks 服务的概述。 还可以订阅单个服务组件的状态更新,并在订阅更改的服务状态时收到警报。

  • 活动请求: 运行群集可能会丢失受影响区域中的节点。 群集管理器会自动从剩余区域请求替换节点。 如果驱动程序节点丢失,群集和作业将完全重启。

  • 预期数据丢失:

    • 控制平面: 在发生区域中断期间,不会丢失任何数据。

    • DBFS 根: 如果工作区数据使用 ZRS 或 GZRS 存储配置,则仍可用。

    • 计算平面: 在 VM 上缓存的数据是临时的。 在发生区域故障期间 VM 丢失的任何数据都将从存储中恢复。 如果驱动程序节点丢失,作业将重启并重新计算结果。

  • 预期停机时间

    • 控制平面: Databricks 控制平面在大约 15 分钟内执行到正常区域的自动故障转移。

    • DBFS 根: 使用 ZRS 或 GZRS 的存储帐户不会停机。

    • 计算平面: 如果节点由于 VM 驻留在受影响的可用性区域中而丢失,Azure 群集管理器会从 Azure 计算提供程序请求替换节点。 如果剩余的正常区域有足够的容量来满足请求,则计算提供程序将从正常区域拉取节点来替换丢失的节点。 这个过程可能需要几分钟。

      如果驱动节点因区域故障而丢失,整个集群将会重启,这可能会导致集群的恢复时间比失去工作节点时更长。 在作业计划和监视策略中规划此行为。

      可以使用无服务器架构或实例池来减少所需时间。

  • 流量重新路由:

    • 控制平面: Databricks 控制平面在大约 15 分钟内执行到正常区域的自动故障转移。

    • DBFS 根: Azure 存储会自动将请求重定向到正常区域中的存储群集。

    • 计算平面: 群集管理器会自动切换到正常区域中的节点。

区域恢复

发生故障的可用性区域恢复后,Azure Databricks 会自动恢复所有区域的正常作。 群集管理器可能会在后续节点创建期间重新平衡节点分布,但现有节点将继续在其当前区域中运行,直到它们终止为止。

无需对故障恢复操作执行任何操作。 新群集的部署将恢复到正常的区域分布。

针对局部区域故障进行测试

Azure Databricks 是一项托管服务,Microsoft 在其中自动处理区域故障转移,并定期进行区域停机测试。 您不需要测试服务本身的区域失效场景。

对于在 Azure Databricks 上运行的应用程序,请模拟驱动程序节点故障并监视群集重启行为来测试作业复原能力。 验证数据处理作业是否可以处理群集重启并从相应的检查点恢复。

对区域范围的故障的复原能力

Azure Databricks 是单区域服务。 如果区域不可用,工作区也不可用。 如果需要多区域部署,请参阅 Azure Databricks 灾难恢复

用于复原的自定义多区域解决方案

Azure Databricks 不提供内置多区域功能。 为了对分析工作负荷进行全面的多区域保护,你必须实现自己的方法。

典型的多区域解决方案涉及两个或多个工作区。 可以从多个策略中进行选择,包括主动-被动和主动-主动体系结构。

若要选择体系结构,请考虑以下因素:

  • 工作负荷对业务的关键性
  • 中断的潜在持续时间(小时或可能全天)
  • 使工作区完全正常运行所需的工作
  • 还原或故障恢复到主要区域所需的工作

有关需要多区域保护的工作负荷,请参阅 Azure Databricks 灾难恢复

备份和恢复

Azure Databricks 在服务的托管作中自动备份数据库。 此过程包括笔记本内容、作业定义、群集配置和访问控制设置。

注释

如果发生区域故障,Azure Databricks 不会丢失任何数据。

建议将数据存储在 Unity 目录存储上。 可以通过存储复制或增量克隆来复制数据。

工作区级备份和还原功能不直接可用。 规划工作区重建流程,包括从您的同步过程还原配置、用户和访问控制。

服务维护期间的系统弹性能力

Azure Databricks 执行自动平台维护以应用安全更新、部署新功能并提高服务可靠性。 可以为群集配置维护时段,以减少影响生产工作负荷的维护的可能性。 有关详细信息,请参阅自动群集更新

服务级别协议

Azure 服务的服务级别协议 (SLA) 描述了每个服务的预期可用性,以及解决方案为实现该可用性预期而必须满足的条件。 有关详细信息,请参阅 联机服务的 SLA