管理集群策略

預覽

此功能已在公共預覽

集群策略限製為配置集群基於一組規則。策略規則限製用於創建集群的屬性或屬性值。集群策略具有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 >”