计算配置最佳做法

本文介绍有关设置可选计算配置的建议。 为了减少配置决策,Azure Databricks 建议利用无服务器计算和计算策略。

  • 无服务器计算不需要配置计算设置。 无服务器计算始终可用,并根据工作负载进行缩放。 请参阅计算类型

  • 利用计算策略,可以创建专为个人计算、共享计算、Power User 和作业等特定用例设计的预配置计算。 如果你无权访问策略,请联系工作区管理员。请参阅默认策略和策略系列

如果选择使用自己的配置创建计算,以下部分提供了典型用例的建议。

注意

本文假定你可以不受限制地创建群集。 工作区管理员应仅向高级用户授予此权限。

调整计算大小时的注意事项

人们通常将计算大小与工作器数量相关联,但需要考虑其他一些重要因素:

  • 执行程序的内核总数(计算):所有执行程序的内核总数。 这决定了计算的最大并行度。
  • 执行程序的总内存量:所有执行程序的 RAM 总量。 这决定了在将数据溢写到磁盘之前,内存中可以存储的数据量。
  • 执行程序本地存储:本地磁盘存储的类型和数量。 本地磁盘主要用于在随机操作和缓存期间发生溢写的情况。

其他注意事项包括工作器实例类型和大小,这也会影响上述因素。 调整计算大小时,请考虑以下事项:

  • 工作负载将消耗多少数据?
  • 工作负载的计算复杂性如何?
  • 从何处读取数据?
  • 数据在外部存储中是如何分区的?
  • 需要多少并行度?

回答这些问题有助于根据工作负载确定最佳计算配置。

工作器数量与工作器实例类型的大小这两者之间需要一个平衡。 配置有两个辅助角色(每个辅助角色有 16 个核心和 128 GB RAM)的计算与配置有 8 个辅助角色(每个辅助角色有 4 个核心和 32 GB RAM)的计算具有相同的计算和内存。

调整计算大小的示例

以下示例显示特定类型的工作负载的计算建议。 这些示例还包括要避免的配置,以及这些配置不适用于工作负载类型的原因。

数据分析

数据分析师通常执行需要来自多个分区的数据的处理,从而导致许多随机操作。 节点数较少的计算可以减少执行这些随机操作所需的网络和磁盘 I/O。

如果只编写 SQL,则数据分析的最佳选项将是无服务器 SQL 仓库。

注意

如果你的工作区为笔记本和作业启用了无服务器计算,则可以使用无服务器计算采用 Python 或 SQL 运行分析。 请参阅连接到无服务器计算

如果必须配置新计算,则大型 VM 类型的单节点计算可能是最佳选择,尤其对于单个分析师更是如此。

分析工作负载可能需要重复读取相同的数据,因此推荐的节点类型在启用磁盘缓存后进行了存储优化。

建议用于分析工作负载的其他功能包括:

  • 启用自动终止,确保计算在处于非活动状态一段时间后终止。
  • 请考虑根据分析师的典型工作负载启用自动缩放。
  • 请考虑使用池,这样可以将计算限制为预先批准的实例类型,并确保一致的计算配置。

基本批处理 ETL

注意

如果你的工作区为作业启用了无服务器计算,则可以使用无服务器计算运行你的作业。 请参阅使用工作流的无服务器计算运行 Azure Databricks 作业

不需要进行太多转换(例如联接或聚合)的简单批处理 ETL 作业通常会受益于计算优化辅助角色类型。

计算优化辅助角色对内存和存储的要求较低,与其他辅助角色类型相比,这可能会节省成本。

复杂批处理 ETL

注意

如果你的工作区为作业启用了无服务器计算,则可以使用无服务器计算运行你的作业。 请参阅使用工作流的无服务器计算运行 Azure Databricks 作业

对于更复杂的 ETL 作业(例如,需要跨多个表进行联合和联接的作业),Databricks 建议减少辅助角色数以减少随机数据量。

复杂转换可能需要大量计算。 如果观察到严重的磁盘溢写或 OOM 错误,则应添加其他节点。

Databricks 建议使用计算优化辅助角色类型。 计算优化辅助角色对内存和存储的要求较低,与其他辅助角色类型相比,这可能会节省成本。 (可选)使用池减少计算启动时间和运行作业管道时的总运行时。

训练机器学习模型

Databricks 建议使用大型节点类型的单节点计算,通过训练机器学习模型进行初始试验。 减少节点数可降低随机操作的影响。

增加辅助角色数有助于实现稳定性,但应避免由于随机数据开销而添加过多的辅助角色。

推荐的工作器类型是启用了磁盘缓存的存储优化,以说明对相同数据的重复读取并启用训练数据的缓存。 如果存储优化节点提供的计算和存储选项不足,请考虑使用 GPU 优化节点。 一个缺点可能在于这些节点缺乏磁盘缓存支持。

建议用于机器学习工作负载的其他功能包括:

  • 启用自动终止,确保计算在处于非活动状态一段时间后终止。
  • 使用池,这样可以将计算限制为预先批准的实例类型,并确保一致的计算配置。