池最佳做法

本文介绍什么是池,以及如何最合理地配置池。 有关创建池的详细信息,请参阅池配置参考

池注意事项

创建池时,请考虑以下事项:

  • 根据目标工作负载,使用实例类型和 Azure Databricks 运行时创建池。
  • 如果可能,请使用现成实例填充池以降低成本。 仅使用现成池作为工作器节点。 驱动程序节点应使用按需实例。
  • 对于执行时间短和执行时间要求严格的作业,使用按需实例填充池。
  • 使用池标记和群集标记管理计费。
  • 预填充池,以确保实例在群集需要时可用。

根据工作负载创建池

可以通过为组织通常使用的每种实例类型和 Azure Databricks 运行时创建池来最大程度地减少实例获取时间。 例如,如果大多数数据工程群集使用实例类型 A,数据科学群集使用实例类型 B,分析群集使用实例类型 C,请为每种实例类型创建一个池。

使用现成实例池

如果驱动程序节点和工作器节点具有不同要求,则分别为每个节点使用不同的池。

Azure Databricks 建议不要为驱动程序节点使用现成实例。 如果将现成池用于工作器节点,请选择按需池作为驱动程序类型

对于执行时间短和执行时间要求严格的作业,将池配置为使用按需实例。 使用按需实例以防止获取的实例被现货市场上出价更高的买家抢走。

对于支持交互式开发的群集或优先考虑成本节约而不是可靠性的作业,将池配置为使用现成实例。

标记池以管理成本和计费

将池标记到适当的成本中心,这样可以管理成本和使用退款。 可以使用多个自定义标记将多个成本中心关联到一个池。 但是,在从池中创建群集时,请务必了解标记的传播方式。 池中的标记会传播到基础云提供商实例,但群集的标记不会传播。 将管理云提供商计算成本的退款所需的所有自定义标记应用于池。

池标记和群集标记均传播到 Azure Databricks 计费。 可以结合使用群集和池标记来管理 Azure Databricks 单位的退款。

若要了解详细信息,请参阅使用标记监视使用情况

配置池以控制成本

可使用以下配置选项来帮助控制池的成本:

  • 最小空闲实例数设置为 0,以避免为不工作的运行实例付费。 当群集需要获取一个新实例时,弊端是可能会增加时间。

  • 根据预期使用情况设置最大容量。 这将设置池中已用实例和空闲实例的最大数量上限。 如果作业或群集在池达到最大容量时从池中请求实例,请求会失败,并且群集不会获取更多实例。 因此,Databricks 建议仅在有严格的实例配额或预算约束时设置最大容量。

  • 设置空闲实例自动终止时间,以在实例从群集中释放到从池中删除实例之间提供一个缓冲区。 将此时间设置为一个在确保计划作业的实例可用性的同时,允许最大程度地降低成本的时间段。 例如,作业 A 计划为在上午 8:00 运行,并且需要 40 分钟才能完成。 作业 B 计划在上午 9:00 运行,需要 30 分钟才能完成。 将“空闲实例自动终止”值设置为 20 分钟,以确保作业 A 完成后返回到池的实例在作业 B 开始时可用。 除非这些实例已被其他群集声明,否则,它们将在作业 B 结束 20 分钟后终止。

预填充池

若要充分利用池,可以预先填充新创建的池。 请在池配置中将最小空闲实例数设置为大于零。 或者,如果你遵循建议将此值设置为零,请使用初学者作业来确保新创建的池具有可供群集访问的实例。

使用初学者作业方法,可以安排在具有更严格的性能要求的作业之前或用户开始使用交互式群集之前,运行具有灵活执行时间要求的作业。 作业完成后,用于该作业的实例将释放回池。 将最小空闲实例设置设置为 0,并将空闲实例自动终止时间设置得足够高,以确保空闲实例仍可用于后续作业。

使用初学者作业使池实例可以启动、填充池,并可持续用于下游作业或交互式群集。