管理集群策略

预览

此功能已在公共预览

集群策略限制为配置集群基于一组规则。策略规则限制用于创建集群的属性或属性值。集群策略具有acl,将其限制为特定用户和组的使用。

集群策略让你:

  • 限制用户创建指定设置的集群。

  • 简化用户界面,允许更多用户创建自己的集群(通过修复和隐藏一些值)。

  • 通过限制每个集群的最大成本来控制成本(通过设置对每小时价格有贡献的属性的限制)。

有关集群策略和配置建议的介绍,请查看Databricks集群策略视频:

集群策略权限限制用户可以在中选择哪些策略政策下拉:

  • 拥有集群创建权限可以选择不受限制的策略并创建完全可配置的集群。

  • 具有集群创建权限和集群策略访问权限的用户可以选择不受限制的他们可以使用的政策和政策。

  • 只访问集群策略的用户可以选择他们可以访问的策略。

请注意

如果没有政策在工作区中创建,“策略”下拉框不显示。

只有admin用户可以创建、编辑和删除策略。管理员用户也可以访问所有的策略。

本文侧重于使用UI管理策略。你也可以使用集群策略API 2.0权限API 2.0管理策略。

个人电脑策略

个人计算是Databricks管理的集群策略,默认情况下,在所有Databricks工作空间上可用。允许用户访问此策略可以使他们在Databricks中创建单机计算资源以供个人使用。

管理员可以管理访问而且自定义策略规则以满足他们工作空间的需要。

需求

集群策略要求优质及以上计划

施行细则

在策略规则中可以表达以下类型的约束:

  • 固定值与禁用的控制元素

  • 固定值,控件隐藏在UI中(值在JSON视图中可见)

  • 属性值限定为一组值(允许列表或阻止列表)

  • 匹配给定正则表达式的属性值

  • 数字属性限定在一定范围内

  • 启用控件时UI使用的默认值

托管集群属性

集群策略支持所有集群属性集群API 2.0.支持的限制的具体类型可能因字段而异(基于它们的类型和与集群表单UI元素的关系)。

此外,集群策略还支持以下功能合成属性

  • “最大dbu小时”指标,这是集群每小时可以使用的最大DBUs。这个指标是在单个集群级别控制成本的直接方法。

  • 对创建集群的源的限制:作业服务(作业集群)、集群UI、集群REST API(通用集群)。

非托管集群属性

集群策略中不能限制以下集群属性:

  • 库,由库API 2.0.一种变通方法是使用自定义容器或者一个init脚本

  • 每个用户创建的集群数量(总数或同时)。策略的作用域是单个集群,因此不了解用户创建的集群。

  • 集群权限(acl),由单独的API处理。

定义集群策略

类中定义集群策略JSON策略定义,在创建集群策略时添加。

创建集群策略

可以使用集群策略UI或集群策略API 2.0.使用实例创建集群策略。

  1. 点击计算图标计算在侧栏中。

  2. 单击政策选项卡。

  3. 点击创建集群策略

  4. 命名策略。策略名不区分大小写。

  5. 控件中的策略族(可选)家庭下拉。这决定了构建策略的模板。看到政策的家庭

  6. 输入一个描述政策。这有助于其他人了解策略的目的。

  7. 定义Tab,粘贴策略定义

  8. 点击创建

克隆现有集群策略

通过克隆已有的集群策略,可以创建新的集群策略。使用实例克隆集群策略。

  1. 点击计算图标计算在侧栏中。

  2. 单击政策选项卡。

  3. 选择需要克隆的策略。

  4. 点击克隆

  5. 在下一页中,所有字段都预先填充了来自现有策略的值。更改要修改的字段的值,然后单击创建

管理集群策略权限

根据定义,管理员拥有所有策略的权限。集群策略权限管理可通过集群策略界面或权限API 2.0

添加集群策略权限

使用实例增加集群策略权限。

  1. 点击计算图标计算在侧栏中。

  2. 单击政策选项卡。

  3. 选择要更新的策略。

  4. 单击权限选项卡。

  5. 的名字列中,选择一个主体。

    策略权限主体
  6. 许可列,选择许可

    政策允许的
  7. 点击添加

删除集群策略权限

使用实例删除集群策略权限。

  1. 点击计算图标计算在侧栏中。

  2. 单击政策选项卡。

  3. 选择要更新的策略。

  4. 单击权限选项卡。

  5. 单击删除图标权限行中的图标。

通过界面编辑集群策略

可以使用集群策略UI或集群策略API 2.0.使用实例编辑集群策略。

  1. 点击计算图标计算在侧栏中。

  2. 单击集群政策选项卡。

    集群策略标签图片
  3. 选择要编辑的策略。

  4. 点击编辑

  5. 在Definition选项卡中,编辑策略定义。

  6. 点击更新

该任务指导系统管理员通过界面删除集群策略

删除集群策略可通过集群策略界面或集群策略API 2.0.使用实例删除集群策略。

  1. 点击计算图标计算在侧栏中。

  2. 单击集群政策选项卡。

    选择“集群策略”选项卡
  3. 选择需要删除的策略。

  4. 点击删除

  5. 点击删除来确认。

集群策略族

创建集群策略时,可以选择使用策略族。策略族为常见计算用例提供预填充的策略规则。例如,有一个个人计算策略系列,您可以在其中基于个人计算策略构建自定义策略。

使用策略族时,策略的规则继承自策略族。选择策略族后,可以按原样创建策略,也可以选择添加规则或覆盖给定的规则。

使用策略族创建自定义策略

使用策略族自定义策略。

  1. 点击计算图标计算在侧栏中。

  2. 单击政策选项卡。

  3. 点击创建集群策略

  4. 命名策略。策略名不区分大小写。

  5. 控件中选择策略族家庭下拉。

  6. 定义选项卡上,单击编辑

  7. 出现一个模态,您可以在其中覆盖策略定义。在覆盖部分,添加更新后的定义,然后单击好吧

集群策略定义

一个集群策略定义是用JSON表示的单个策略定义的集合。

策略定义

一个策略定义是地图之间定义属性的路径字符串和一个限制类型.每个属性只能有一个限制。路径特定于资源类型,并反映资源创建API属性名称。如果资源创建使用嵌套属性,路径将使用点连接嵌套属性名。使用策略创建集群时,策略定义中未定义的属性是无限制的。

接口政策路径字符串]:PolicyElement

策略元素

一个政策因素指定给定属性上受支持的一种限制类型,还可以指定默认值。可以指定默认值,而无需在策略中定义属性限制。

类型PolicyElementFixedPolicy|ForbiddenPolicy|LimitingPolicyBaseLimitingPolicy);类型LimitingPolicyAllowlistPolicy|BlocklistPolicy|RegexPolicy|RangePolicy|UnlimitedPolicy

介绍策略类型:

固定的政策

将值限制为指定的值。对于非数值和布尔值的属性值,属性值必须用字符串表示或转换为字符串。属性可选地隐藏在UI中隐藏的标志存在并设置为真正的.固定策略不能指定缺省值。

interface FixedPolicy{类型:“固定”;值:字符串|数字| boolean;隐藏吗?:布尔;}
例子
“spark_version”“类型”“固定”“价值”“7.3.x-scala2.12”“隐藏”真正的

被禁止的政策

对于可选属性,禁止使用该属性。

接口ForbiddenPolicy类型“禁止”
例子

此策略禁止为工作节点将池附加到集群。驱动器节点也禁止使用池,因为driver_instance_pool_id继承策略。

“instance_pool_id”“类型”“禁止”

限制策略:常用字段

在限制策略中,您可以指定两个附加字段:

  • defaultValue-在UI中填充集群创建表单的值。

  • isOptional-对某个属性的限制策略使其成为必需。属性可选isOptional字段为true。

interface LimitedPolicyBase {defaultValue?: string | number | boolean;isOptional吗?:布尔;}
例子
“instance_pool_id”“类型”“无限”“isOptional”真正的“defaultValue”“id1”

此示例策略指定默认值id1用于工作节点的池,但使其为可选。在创建集群时,可以选择不同的池,也可以选择不使用池。如果driver_instance_pool_id策略中没有定义,或者在创建集群时,工作节点和驱动节点使用相同的池。

允许列表策略

允许值的列表。

接口AllowlistPolicy类型“allowlist”字符串|数量|布尔) [];
例子
“spark_version”“类型”“allowlist”“价值观”“7.2.x-scala2.12”“7.3.x-scala2.12”

块列表策略

不允许的值列表。由于值必须精确匹配,当属性在值的表示方式上过于宽松(例如允许前导和尾随空格)时,此策略可能无法按预期工作。

接口BlocklistPolicy类型“过滤清单”字符串|数量|布尔) [];
例子
“spark_version”“类型”“过滤清单”“价值观”“4.0.x-scala2.11”

正则表达式的政策

将值限制为匹配正则表达式的值。为了安全起见,匹配正则表达式时总是锚定在字符串值的开头和结尾。

接口RegexPolicy类型“正则表达式”模式字符串
例子
“spark_version”“类型”“正则表达式”“模式”“5 \ \[3456]。*”

政策范围

属性指定的范围内限制该值minValue而且maxValue属性。取值必须为十进制数。数值限制必须可表示为双浮点值。为了表示缺少特定的限制,可以省略其中之一minValuemaxValue

interface RangePolicy{类型:“范围”;minValue吗?:数量;maxValue吗?:数量;}
例子
“num_workers”“类型”“范围”“执行”10

无限的政策

不定义值限制。您可以使用这种策略类型来设置必需的属性,或者在UI中设置默认值。

接口UnlimitedPolicy类型“无限”
例子

如果需要添加COST_BUCKET标签:

“custom_tags。COST_BUCKET”“类型”“无限”

为Spark配置变量设置默认值,但也允许省略(删除)它:

“spark_conf.spark.my.conf”“类型”“无限”“isOptional”真正的“defaultValue”“my_value”

集群策略属性路径

下表列出了支持的集群策略属性路径。

属性路径

类型

描述

autoscale.max_workers

可选数量

隐藏时,从UI中移除最大工人编号字段。

autoscale.min_workers

可选数量

隐藏时,从UI中移除最小工人编号字段。

autotermination_minutes

数量

值为0表示不自动终止。隐藏时,从UI中移除自动终止复选框和值输入。

aws_attributes.availability

字符串

控制AWS可用性(现货ON_DEMAND,或SPOT_WITH_FALLBACK

aws_attributes.ebs_volume_count

数量

AWS EBS卷的个数。

aws_attributes.ebs_volume_size

数量

AWS EBS卷的大小(GiB)。

aws_attributes.ebs_volume_type

字符串

AWS EBS卷的类型。

aws_attributes.first_on_demand

数量

控制放置在按需实例上的节点数量。

aws_attributes.instance_profile_arn

字符串

控制AWS实例配置文件。

aws_attributes.spot_bid_price_percent

数量

控制AWS现货实例的最高价格。

aws_attributes.zone_id

字符串

控制AWS分区ID。

cluster_log_conf.path

字符串

日志文件的目标URL。

cluster_log_conf.region

字符串

S3位置的Region。

cluster_log_conf.type

S3、DBFS或NONE

日志目的类型。

cluster_name

字符串

集群名称。

custom_tags。*

字符串

通过附加标签名来控制特定的标签值,例如:custom_tags。< mytag >

data_security_mode

字符串

设置集群的安全特性。统一目录需要SINGLE_USERUSER_ISOLATION模式。传递集群需要LEGACY_PASSTHROUGH和表ACL集群要求LEGACY_TABLE_ACL.默认设置为没有一个没有启用安全特性。

docker_image.basic_auth.password

字符串

Databricks Container Services映像基本身份验证的密码。

docker_image.basic_auth.username

字符串

Databricks Container Services映像基本身份验证的用户名。

docker_image.url

字符串

控制Databricks容器服务映像URL。隐藏时,从UI中删除Databricks Container Services部分。

driver_node_type_id

可选的字符串

隐藏时,从UI中移除驱动程序节点类型选择。

enable_elastic_disk

布尔

隐藏时,删除启用自动缩放本地存储复选框。

enable_local_disk_encryption

布尔

设置为真正的使能,或禁用,加密本地连接到集群的磁盘(通过API指定)。

init_scripts。* .s3.destinationinit_scripts。* .dbfs.destinationinit_scripts。* .file.destinationinit_scripts。* .s3.region

字符串

指init脚本在属性数组中的索引。看到数组属性

instance_pool_id

字符串

控制工作节点使用的池driver_instance_pool_id也定义了,否则为所有集群节点定义。如果将池用于工作节点,那么还必须将池用于驱动节点。隐藏时,从UI中移除池选择。

driver_instance_pool_id

字符串

如果指定,则为驱动节点配置与工作节点不同的池。如果未指定,则继承instance_pool_id.如果将池用于工作节点,那么还必须将池用于驱动节点。隐藏时,从UI中移除驱动池选择。

node_type_id

字符串

隐藏时,从UI中移除工作节点类型选择。

num_workers

可选数量

隐藏时,从UI中移除工人编号规范。

single_user_name

字符串

凭据传递单用户访问的用户名。

spark_conf。*

可选的字符串

通过附加配置键名来控制特定的配置值。例如,spark_conf.spark.executor.memory

spark_env_vars。*

可选的字符串

通过附加环境变量来控制特定的Spark环境变量值,例如:spark_env_vars。<环境变量名称>

spark_version

字符串

Spark映像版本名(通过API指定)。

ssh_public_keys。*

字符串

指公钥在属性数组中的索引。看到数组属性

集群策略虚拟属性路径

属性路径

类型

描述

dbus_per_hour

数量

计算属性,表示包括驱动程序节点在内的集群的DBU成本(在自动伸缩集群的情况下为最大值)。适用范围有限。

cluster_type

字符串

表示可以创建的集群类型:

  • 通用用于Databricks通用集群

  • 工作对于作业调度器创建的作业集群

  • dlt用于创建的集群Delta Live Tables管道

允许或阻止从策略创建指定类型的集群。如果通用值,则该策略不会显示在通用集群创建表单中。如果工作值,则策略不会显示在作业新建群集表单中。

数组属性

可以通过两种方式为数组属性指定策略:

  • 对所有数组元素的通用限制。这些限制使用策略路径中的通配符。

  • 特定索引处数组元素的特定限制。这些限制在路径中使用一个数字。

例如,对于数组属性ssh_public_keys,则泛型路径为ssh_public_keys。*具体路径有形式ssh_public_keys。< n >,在那里< n >是数组中的整数索引(从0开始)。可以结合通用限制和特定限制,在这种情况下,通用限制适用于没有特定限制的每个数组元素。每种情况下只适用一个策略限制。

数组策略的典型用例有:

  • 要求包含特定的条目。例如:

    “ssh_public_keys.0”“类型”“固定”“价值”“< required-key-1 >”},“ssh_public_keys.1”“类型”“固定”“价值”“< required-key-2 >”

    如果不指定键的顺序,就不能要求特定的键。

    • 需要整个列表的固定值。例如:

      “ssh_public_keys.0”“类型”“固定”“价值”“< required-key-1 >”},“ssh_public_keys *”。“类型”“禁止”
    • 完全禁止使用。

      “ssh_public_keys *”。“类型”“禁止”
  • 允许任何数量的条目,但只允许遵循特定的限制。例如:

    “ssh_public_keys *”。“类型”“正则表达式”“模式””。* <所需内容>。*”

如果init_scripts路径,数组包含结构,根据用例可能需要处理其中的所有元素。例如,需要一组特定的初始化脚本,你可以使用以下模式:

“init_scripts.0.s3.destination”“类型”“固定”“价值”“s3: / / < s3-path >”},“init_scripts.0.s3.region”“类型”“固定”“价值”“< s3-region >”},“init_scripts.1.dbfs.destination”“类型”“固定”“价值”“dbfs: / < dbfs-path >”},“init_scripts * .s3.destination”。“类型”“禁止”},“init_scripts * .dbfs.destination”。“类型”“禁止”},“init_scripts * .file.destination”。“类型”“禁止”},

集群策略示例

一般集群策略

一种通用的集群策略,用于指导用户并限制某些功能,同时要求标记、限制最大实例数和强制超时。

“spark_conf.spark.databricks.cluster.profile”“类型”“固定”“价值”“singleNode”“隐藏”真正的},“instance_pool_id”“类型”“禁止”“隐藏”真正的},“spark_version”“类型”“正则表达式”“模式”“7 \ \ [0 - 9]+ \ \ .x-scala。*”},“node_type_id”“类型”“allowlist”“价值观”“i3.xlarge”“i3.2xlarge”“i3.4xlarge”),“defaultValue”“i3.2xlarge”},“driver_node_type_id”“类型”“固定”“价值”“i3.2xlarge”“隐藏”真正的},“autoscale.min_workers”“类型”“固定”“价值”1“隐藏”真正的},“autoscale.max_workers”“类型”“范围”“执行”25“defaultValue”5},“enable_elastic_disk”“类型”“固定”“价值”真正的“隐藏”真正的},“autotermination_minutes”“类型”“固定”“价值”30.“隐藏”真正的},“custom_tags.team”“类型”“固定”“价值”“产品”

简单中型策略

允许用户在最小配置的情况下创建中型集群。创建时唯一需要的字段是集群名称;其余的都是固定和隐藏的。

“instance_pool_id”“类型”“禁止”“隐藏”真正的},“spark_conf.spark.databricks.cluster.profile”“类型”“禁止”“隐藏”真正的},“autoscale.min_workers”“类型”“固定”“价值”1“隐藏”真正的},“autoscale.max_workers”“类型”“固定”“价值”10“隐藏”真正的},“autotermination_minutes”“类型”“固定”“价值”60“隐藏”真正的},“node_type_id”“类型”“固定”“价值”“i3.xlarge”“隐藏”真正的},“driver_node_type_id”“类型”“固定”“价值”“i3.xlarge”“隐藏”真正的},“spark_version”“类型”“固定”“价值”“7.3.x-scala2.12”“隐藏”真正的},“enable_elastic_disk”“类型”“固定”“价值”“隐藏”真正的},“custom_tags.team”“类型”“固定”“价值”“产品”

工作政策

允许用户创建作业集群并使用集群运行作业。用户不能使用该策略创建通用集群。

“cluster_type”“类型”“固定”“价值”“工作”},“dbus_per_hour”“类型”“范围”“执行”One hundred.},“instance_pool_id”“类型”“禁止”“隐藏”真正的},“num_workers”“类型”“范围”“minValue”1},“node_type_id”“类型”“正则表达式”“模式”“[rmci] [3 - 5] [rnad] *。(主){0,1}xlarge”},“driver_node_type_id”“类型”“正则表达式”“模式”“[rmci] [3 - 5] [rnad] *。(主){0,1}xlarge”},“spark_version”“类型”“正则表达式”“模式”“7 \ \ [0 - 9]+ \ \ .x-scala。*”},“custom_tags.team”“类型”“固定”“价值”“产品”

单节点策略

允许用户在本地模式下创建没有工作节点的单节点集群,并启用Spark。有关示例策略,请参见单节点集群策略

外部转移政策

允许用户创建带有管理员定义的已附加metastore的集群。这对于允许用户创建自己的集群而不需要额外配置非常有用。

“spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL”“类型”“固定”“价值”" jdbc::状态"置疑" / / < jdbc url >”},“spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName”“类型”“固定”“价值”“com.microsoft.sqlserver.jdbc.SQLServerDriver”},“spark_conf.spark.databricks.delta.preview.enabled”“类型”“固定”“价值”“真正的”},“spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName”“类型”“固定”“价值”“< metastore-user >”},“spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword”“类型”“固定”“价值”“< metastore-password >”