最佳做法:计算策略

警告

本文已存档,可能不再反映产品的当前状态。 有关计算策略的信息,请参阅创建和管理计算策略

管理员可以通过 Azure Databricks 计算策略来控制 Azure Databricks 工作区中的计算资源创建。 通过有效使用计算策略,管理员可以:

  • 强制实施标准化计算配置。
  • 防止过度使用资源,并控制支出。
  • 通过正确标记计算资源来确保退款准确。
  • 通过向用户提供针对特定工作负载的预配置集散配置来帮助进行分析和处理。

与有效的加入、审批和退款过程相结合,计算策略可成为 Azure Databricks 平台治理中的基础组件。 本指南提供了建议和最佳做法,可帮助你创建成功的计划,以将计算策略集成到治理框架中。

由于监管措施根据每家组织的要求和现有监管基础结构而各不相同,本文首先提供通用于计算策略的建议。 本文的最后一部分将讨论用于解决环境中可能会出现的难题的具体计策。

本文将讨论以下最佳做法和建议,以确保成功推出计算治理:

  • 创建分阶段引入计算策略的计划,以帮助用户过渡到治理后的环境。
  • 创建计划,以传达计算策略推出过程中每个阶段的更改。
  • 确定计算治理的难点,并实施解决这些难点的策略。

计算策略推出

实施计算策略可能会极大地改变用户体验。 Databricks 建议采用分阶段的方法来引导用户完成过渡:

  • 传达即将发生的更改,并为用户提供测试计算配置的机会。
  • 执行软推出。
  • 逐步引入进一步的策略更改。
  • 硬性切换到完全受监管的环境。

分阶段推出使用户能够熟悉新的策略,并防止现有工作负载发生中断。 下图是此建议过程的示例:

计算策略推出计划

以下部分将提供有关这些阶段的更详细信息:

传达和测试计算策略

该过程首先是向用户传达即将发生的更改。 传达计划应该包括:

  • 有关即将发生的更改的详细信息。
  • 发生这些更改的原因。
  • 用户需要采取哪些措施才能确保成功过渡工作负载。
  • 如何提供有关更改的反馈。
  • 每个推出阶段的时间线。
  • 在分阶段推出过程的每个阶段开始时,传达与该阶段相关的更多详细信息。

下图提供了分阶段推出过程的示例传达计划:

计算策略传达计划

计划可能包含不同的阶段,具体取决于环境和计算策略。 本示例包含四个阶段:

  • 阶段 1 包括将计划传达给用户并开始测试。 必须向用户提供机会,以在符合新策略的计算上测试其当前和预期工作负载。 需要在此过程的早期阶段识别现有工作负载和规划的工作负载的任何问题。
  • 阶段 2 将继续测试并推出计算标记策略。
  • 阶段 3 将引入计算类型,本例中指定使用 T 恤尺码计算,例如,小号、大号或超大号计算类型。
  • 阶段 4 将最终推出计算策略并提供完整的用户文档。

还应向用户提供机会,以使用初始阶段中规划的计算配置来测试其工作负载。 此项测试有助于识别使用建议的策略运行的、有问题的现有工作负载。

有关引入计算策略的注意事项

在规划计算策略的初始部署时,请考虑当前管理策略。 具体而言,考虑是从限制用户创建计算的环境还是从更开放的环境迁移。

限制性环境

对于用户无权在其中创建计算的环境,请先为用户推出限制性策略以及启用计划。 启用计划可以是基于计算机的培训、研讨会或文档。 为用户提供有关配置计算的最佳做法指导可以提高用户充分利用平台的能力。 当用户在平台中能够遵守规定且具备一定能力时,可以放宽策略的限制。

非受限环境

在非受限环境中应用策略可能更具挑战性。 一些现有的用例和计算几乎总会超出新策略的限制,因此在测试或软推出阶段识别这些问题至关重要。

有权创建计算或者有权访问非受限策略的用户将在整个软推出过程中保持对此策略的访问权限,以确保所有工作负载继续正常运行。 用户应使用软推出并结合将为其提供的新策略来测试其所有工作负载。

请务必为用户提供一个渠道让他们提交有关策略的反馈。 出现问题时,与用户协作微调策略或定义新策略。

最终推出

在达到截止日期时,删除受限用户对非受限策略的访问权限。 现在,计算策略的推出应已完成。

具体的难题和策略

以下示例演示如何应用计算策略来解决具体的难题。 其中的许多计策可以同时采用,但每个计策需要在所有策略中运用。 例如,如果将标记强制实施计策与 T 恤尺寸计策配合使用,则每个 T 恤策略也需要一个 custom_tag.* 策略。

标记强制实施

难题

用户可以任意创建计算,不存在任何强制要求应用所需标记的机制。

解决方案

  1. 撤销用户的计算创建权限

  2. 将计算标记规则添加到任何适用的计算策略。 要向策略添加计算标记规则,请使用 custom_tags.<tag-name> 特性。 值可以是非受限策略下的任何内容,也可以受固定允许列表阻止列表正则表达式范围策略的限制。 例如,为确保成本分摊和成本归类正确,请对限制为允许的成本中心值列表的每个策略强制实施 COST_CENTER 标记:

    {"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}
    

    使用此策略的任何用户必须使用 9999、9921 或 9531 填充 COST_CENTER 标记才能启动计算。

  3. 将策略分配给应该能够针对这三个成本中心收费的用户。 可以通过计算策略 UI策略 API 在用户或组级别分配策略。 以下示例请求正文将策略分配给销售部门:

    {
      "access_control_list": [
        {
          "user_name": "user@mydomain.com",
          "all_permissions": [
            {
              "permission_level": "CAN_USE"
            }
          ]
        },
        {
          "group_name": "sales",
          "all_permissions": [
            {
              "permission_level": "CAN_USE"
            }
          ]
        }
      ]
    }
    

经验不足的用户

难题

用户不熟悉计算或云基础结构预配,或者对计算创建选项感到迷惑。

解决方案

使用计算策略来定义包含“T 恤”尺寸的计算配置,例如,小号、中号或大号计算。

  1. 为每个 T 恤尺寸创建一个策略。 T 恤尺寸策略向用户指示相对计算大小,并且可以是灵活模板,也可以是零选项配置。 零选项或低选项策略通常包含固定和隐藏的策略规则。 以下示例定义一个包含 spark_version 固定值 DBR 7.3 的策略。 将 hidden 标志设置为 true 可确保此选项对用户不可见。

    {"spark_version": { "type": "fixed", "value": "auto:latest-ml", "hidden": true }}
    

    在定义灵活模板时,可以使用范围阻止列表正则表达式不受限策略等策略来设置上限、不可选字段和半受限策略元素。 以下示例定义一个最多允许自动缩放 25 个节点的策略。 可以使用此定义来设置每个 T 恤尺寸的上限,同时提供一定的灵活性。 有关计算模板方法的更多详细信息,请参阅资源使用过度

    {"autoscale.max_workers": { "type": "range", "maxValue": "25", "defaultValue": 5}}
    
  2. 将该策略分配给应有权创建 T 恤尺寸计算的用户。 可以通过策略 UI 或策略权限 API 在用户或组级别分配策略。 例如,若要通过 UI 将此策略分配给所有用户,请执行以下操作:

    1. 转到策略并选择“编辑”

    2. 选择“权限”选项卡。

    3. 在下拉菜单中的“组”下选择“所有用户”选项 。

      将策略分配给所有用户

  3. 撤销只能使用这些新策略的组对非受限策略的访问权限。 使用计算策略后,为用户授予“计算创建”权限可让他们访问非受限策略。 对于不应拥有此权限的用户,必须撤销此权限。

    要撤销计算创建权限,请参阅配置计算创建权限

特定于用例的策略

难题

一些工作负载或分析与现有的策略不兼容,或者用户不了解特定工作负载类型的正确计算配置。

解决方案

如果你发现在应用现有策略后工作负荷不正常运行,更好的做法通常是专门创建针对这些工作负荷的新策略,而不是扩展现有策略。

为帮助用户使用这些策略创建计算,创建针对特定用例优化的策略可能会有所帮助。 为这些策略分配描述性的名称,以帮助用户识别这些策略。 例如,如果工作负载将会查询支持谓词下推的数据源,则最佳做法是生成一个特定的策略,用于强制要求使用少量或零个工作器进行自动缩放。 此策略可确保云提供商和 Azure Databricks 成本不会不必要地增长,同时可等待数据源计算查询的下推组件。

  1. 创建一个用于强制实施特定于用例的最佳做法的策略。 此示例定义一个包含固定值 0(最小工作器数)的策略。 此策略还强制要求计算自动缩放,从而符合谓词下推示例的最佳做法。

    {"autoscale.min_workers": { "type": "fixed", "value": "0", "hidden": false }}
    
  2. 将该策略分配给需要为这些用例生成计算的用户。 可以通过策略 UI权限 API 在用户或组级别分配策略。 例如,若要通过 UI 将此策略分配给数据科学家组,请执行以下操作:

    1. 转到策略并选择“编辑”

    2. 选择“权限”选项卡。

    3. 若要将策略分配给特定的团队,请在“选择用户或组”下拉菜单中选择该团队的名称。

      将策略分配给组

资源使用过度

难题

用户正在创建过大的计算,从而消耗了过多的昂贵资源。 原因通常是:

  • 未能激活自动缩放。
  • 不正确使用了自动终止时限。
  • 最小工作器节点计数较高。
  • 实例类型昂贵。

解决方案

将计算策略与内部审批过程搭配使用可以控制资源,同时可在必要时提供对大型计算资源的访问权限。

  1. 建立评审过程,用于授予对更大或更灵活策略的访问权限。 评审过程应提供一个引入窗体,用于收集支持更大或更灵活计算配置需求的信息。 平台所有权团队应评估此信息,以确定如何支持工作负载要求。 下图演示了一个使用 T 恤尺寸的示例审批过程:

    策略大小调整过程

  2. 创建约束更少的更灵活策略,并将重点放在标记等控制监管项上。 灵活策略的示例:

{
  "autoscale.min_workers": {
    "type": "range",
    "maxValue": 20,
    "defaultValue": 2
  },
  "autoscale.max_workers": {
    "type": "range",
    "maxValue": 100,
    "defaultValue": 8
  },
  "autotermination_minutes": {
    "type": "range",
    "maxValue": 120,
    "defaultValue": 60
  },
  "node_type_id": {
    "type": "blocklist",
    "values": ["Standard_E16s_v3", "Standard_E64as_v4", "Standard_E96as_v4", "Standard_E48as_v4"],
    "defaultValue": "Standard_L8s"
  },
  "driver_node_type_id": {
    "type": "blocklist",
    "values": ["Standard_E16s_v3", "Standard_E64as_v4", "Standard_E96as_v4", "Standard_E48as_v4"],
    "defaultValue": "Standard_L8s_v2"
  },
  "spark_version": {
    "type": "fixed",
    "value": "auto:latest-ml",
    "hidden": true
  },
  "enable_elastic_disk": {
    "type": "fixed",
    "value": true,
    "hidden": true
  },
  "custom_tags.team": {
    "type": "fixed",
    "value": "product"
  }
}
  1. 阐述升级和审批过程,并将其与用户分享。 发布有关如何确定可能需要更高灵活性或更大计算的工作负载类型的指导也会非常有用。

  2. 批准用户后,向其分配策略。 可以通过策略 UI 或通过向权限 API 提交请求在用户或组级别分配策略:

    {
        "access_control_list": {
          "user_name": "users_email@yourdomain.com",
          "permission_level": "CAN_USE"
        }
    }
    

了解详细信息

要详细了解 Azure Databricks 上的计算策略,请参阅《创建管理计算策略》,以及我们有关计算策略的博客文章:《使用计算策略通过完整的管理员控制来允许创建简单群集》。