Справочник по вычислительной политике
Эта статья содержит ссылку на определения политик вычислений. В статьях содержится ссылка на доступные атрибуты политики и типы ограничений. Существуют также примеры политик, на которые можно ссылаться для распространенных вариантов использования.
Что такое определения политик?
Определения политик — это отдельные правила политики, выраженные в формате JSON. Определение может добавить правило в любой из атрибутов, контролируемых API кластеров . Например, эти определения задают время автотерминации по умолчанию, запрещают пользователям использовать пулы и применяют использование Photon:
{
"autotermination_minutes" : {
"type" : "unlimited",
"defaultValue" : 4320,
"isOptional" : true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"runtime_engine": {
"type": "fixed",
"value": "PHOTON",
"hidden": true
}
}
Для каждого атрибута может быть только одно ограничение. Путь атрибута отражает имя атрибута API. Для вложенных атрибутов путь объединяет имена вложенных атрибутов с помощью точек. Атрибуты, которые не определены в определении политики, не будут ограничены.
Поддерживаемые атрибуты
Политики поддерживают все атрибуты, управляемыеAPI кластеров
Вы также можете использовать параметры настройки для задания максимального числа вычислительных единиц в час и типа кластера. См. виртуальные пути атрибутов.
В следующей таблице перечислены поддерживаемые пути атрибутов политики:
Путь атрибута | Тип | Описание |
---|---|---|
autoscale.max_workers |
необязательный номер | При скрытии удаляет максимальное поле рабочего числа из пользовательского интерфейса. |
autoscale.min_workers |
необязательный номер | При скрытии удаляет минимальное поле рабочего числа из пользовательского интерфейса. |
autotermination_minutes |
число | Значение 0 означает отсутствие автоматического завершения. При скрытии удаляет флажок автоматического завершения и входные данные значений из пользовательского интерфейса. |
azure_attributes.availability |
струна | Управляет использованием вычислительных ресурсов с экземплярами по запросу или спотовыми (ON_DEMAND_AZURE или SPOT_WITH_FALLBACK_AZURE ). |
azure_attributes.first_on_demand |
число | Управляет количеством узлов для размещения на экземплярах по запросу. |
azure_attributes.spot_bid_max_price |
число | Управляет максимальной ценой для спотовых экземпляров Azure. |
cluster_log_conf.path |
струна | URL-адрес назначения файлов журнала. |
cluster_log_conf.type |
струна | Тип места назначения журнала.
DBFS является единственным допустимым значением. |
cluster_name |
струна | Имя кластера. |
custom_tags.* |
струна | Управляйте определенными значениями тегов, добавляя имя тега, например custom_tags.<mytag> . |
data_security_mode |
струна | Задает режим доступа кластера. Каталог Unity требует SINGLE_USER или USER_ISOLATION (режим общего доступа в пользовательском интерфейсе). Значение NONE означает, что функции безопасности не включены. |
docker_image.basic_auth.password |
струна | Пароль для базовой проверки подлинности образа в Databricks Container Services. |
docker_image.basic_auth.username |
струна | Имя пользователя для базовой проверки подлинности в Databricks Container Services. |
docker_image.url |
струна | Управляет URL-адресом образа службы контейнеров Databricks. При скрытии удаляет раздел Databricks Container Services из пользовательского интерфейса. |
driver_node_type_id |
необязательная строка | При скрытии удаляет выбор типа узла драйвера из пользовательского интерфейса. |
enable_local_disk_encryption |
булев | Установите true , чтобы включить, или false , чтобы отключить шифрование дисков, которые локально подключены к кластеру (как указано через API). |
init_scripts.*.workspace.destination
init_scripts.*.volumes.destination
init_scripts.*.abfss.destination
init_scripts.*.file.destination
|
струна |
* ссылается на индекс скрипта инициализации в массиве атрибутов. См. Политики записи для атрибутов массива. |
instance_pool_id |
струна | Управляет пулом, используемым рабочими узлами, если driver_instance_pool_id также определен или для всех узлов кластера в противном случае. При использовании пулов для рабочих узлов необходимо также использовать пулы для узла драйвера. При скрытии удаляет выбор пула из пользовательского интерфейса. |
driver_instance_pool_id |
струна | Если задано, настраивает другой пул для узла драйвера, чем для рабочих узлов. Если не указано, наследуется instance_pool_id . При использовании пулов для рабочих узлов необходимо также использовать пулы для узла драйвера. При скрытии удаляет выбор пула драйверов из пользовательского интерфейса. |
node_type_id |
струна | При скрытии удаляет выбор типа рабочего узла из пользовательского интерфейса. |
num_workers |
необязательный номер | При скрытии удаляет спецификацию рабочего номера из пользовательского интерфейса. |
runtime_engine |
струна | Определяет, используется ли кластер Photon или нет. Возможные значения : PHOTON или STANDARD . |
single_user_name |
струна | Определяет, какие пользователи или группы могут быть назначены вычислительному ресурсу. |
spark_conf.* |
необязательная строка | Управляет определенными значениями конфигурации путем добавления имени ключа конфигурации, например spark_conf.spark.executor.memory . |
spark_env_vars.* |
необязательная строка | Контролирует конкретные значения переменной среды Spark путем добавления значений переменной среды, например: spark_env_vars.<environment variable name> . |
spark_version |
струна | Имя версии образа Spark, указанное через API (Databricks Runtime). Вы также можете использовать специальные значения политики, которые динамически выбирают среду выполнения Databricks. См. специальные значения политик для выборасреды выполнения Databricks. |
workload_type.clients.jobs |
булев | Определяет, можно ли использовать вычислительный ресурс для заданий. См. раздел Запрет использования вычислений с заданиями. |
workload_type.clients.notebooks |
булев | Определяет, можно ли использовать вычислительный ресурс с записными книжками. См. раздел Запрет использования вычислений с заданиями. |
Пути виртуальных атрибутов
Эта таблица включает два дополнительных синтетических атрибута, поддерживаемых политиками:
Путь атрибута | Тип | Описание |
---|---|---|
dbus_per_hour |
число | Вычисляемый атрибут, представляющий максимальное количество DBU, которое ресурс может использовать в час, включая управляющий узел. Эта метрика является прямым способом управления затратами на отдельном уровне вычислений. Использование с ограничением диапазона. |
cluster_type |
струна | Представляет тип кластера, который можно создать: - all-purpose для универсальных вычислительных ресурсов Azure Databricks- job для вычислений заданий, созданных планировщиком заданий- dlt для вычислений, созданных для конвейеров Delta Live TablesРазрешить или блокировать создание указанных типов вычислений из политики. Если значение all-purpose не допускается, политика не отображается в универсальном интерфейсе создания вычислений. Если значение job не разрешено, политика не отображается в интерфейсе создания вычислительных заданий. |
Специальные параметры политики для выбора среды выполнения Databricks
Атрибут spark_version
поддерживает специальные значения, которые динамически сопоставляются с версией Databricks Runtime на основе текущего набора поддерживаемых версий Databricks Runtime.
Следующие значения можно использовать в атрибуте spark_version
:
-
auto:latest
: сопоставляется с последней версией общедоступной среды выполнения Databricks. -
auto:latest-ml
: сопоставляется с последней версией Databricks Runtime ML. -
auto:latest-lts
: соответствует последней версии с долгосрочной поддержкой (LTS) Databricks Runtime. -
auto:latest-lts-ml
: соответствует последней LTS версии Databricks Runtime ML. -
auto:prev-major
: сопоставляется со второй последней версией среды выполнения GA Databricks. Например, еслиauto:latest
равно 14.2,auto:prev-major
равно 13.3. -
auto:prev-major-ml
: сопоставляется со второй последней версией машинного обучения среды выполнения Databricks. Например, еслиauto:latest
равно 14.2,auto:prev-major
равно 13.3. -
auto:prev-lts
: сопоставляется со второй последней версией среды выполнения LTS Databricks. Например, еслиauto:latest-lts
равно 13.3,auto:prev-lts
равно 12.2. -
auto:prev-lts-ml
: сопоставляется с предпоследней версией среды выполнения ML LTS Databricks. Например, еслиauto:latest-lts
равно 13.3,auto:prev-lts
равно 12.2.
Заметка
Использование этих значений не приводит к автоматическому обновлению вычислительной среды при выпуске новой версии среды выполнения. Чтобы изменить версию среды выполнения Databricks, пользователь должен явно изменить настройки вычислений.
Поддерживаемые типы политик
В этом разделе содержится ссылка для каждого из доступных типов политик. Существует две категории типов политик: фиксированные политики и ограничения политик.
Фиксированные политики препятствуют настройке пользователей в атрибуте. Ниже перечислены два типа фиксированных политик:
Ограничение политик ограничивает параметры пользователя для настройки атрибута. Ограничения политик также позволяют задать значения по умолчанию и сделать атрибуты необязательными. См. дополнительные поля политики ограничения.
Возможные варианты ограничения политик:
- Политика списка разрешений
- политика блоклиста
- политика regex
- Политика диапазона
- политика без ограничений
Исправленная политика
Фиксированные политики ограничивают атрибут указанным значением. Для значений атрибутов, отличных от числовых и логических, значение должно быть представлено или преобразовано в строку.
С фиксированными политиками можно также скрыть атрибут из пользовательского интерфейса, установив для поля hidden
значение true
.
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
В этом примере политика исправляет версию среды выполнения Databricks и скрывает поле из пользовательского интерфейса пользователя:
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}
политика Запрещено
Запрещенная политика запрещает пользователям настраивать атрибут. Запрещенные политики совместимы только с необязательными атрибутами.
interface ForbiddenPolicy {
type: "forbidden";
}
Эта политика запрещает присоединение пулов к вычислениям для рабочих узлов. Также запрещены пулы для узла драйвера, так как узел driver_instance_pool_id
наследует политику.
{
"instance_pool_id": { "type": "forbidden" }
}
политика списка разрешений
Политика списка разрешений указывает список значений, которые пользователь может выбрать при настройке атрибута.
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Этот пример списка разрешений позволяет пользователю выбирать две версии среды выполнения Databricks:
{
"spark_version": { "type": "allowlist", "values": [ "13.3.x-scala2.12", "12.2.x-scala2.12" ] }
}
политика блокировки
Политика блокировки перечисляет запрещенные значения. Так как значения должны быть точными совпадениями, эта политика может не работать должным образом, если атрибут нестрогий в отношении представления значения (например, разрешает начальные и конечные пробелы).
interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
В этом примере пользователь блокирует выбор 7.3.x-scala2.12
в качестве среды выполнения Databricks.
{
"spark_version": { "type": "blocklist", "values": [ "7.3.x-scala2.12" ] }
}
Политика Regex
Политика регулярных выражений ограничивает доступные значения до тех, которые соответствуют регулярному выражению. Для безопасности убедитесь, что regex привязан к началу и концу строкового значения.
interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
В этом примере ограничивается выбор версий Среды выполнения Databricks, доступных пользователю.
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}
политика диапазона
Политика диапазона ограничивает значение заданного диапазона с помощью полей minValue
и maxValue
. Значение должно быть десятичным числом.
Числовые ограничения должны представляться как двойное значение с плавающей запятой. Чтобы указать отсутствие определенного ограничения, можно пропустить либо minValue
, либо maxValue
.
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
В этом примере максимальное количество работников ограничено до 10.
{
"num_workers": { "type": "range", "maxValue": 10 }
}
Неограниченная политика
Неограниченная политика используется для создания обязательных атрибутов или задания значения по умолчанию в пользовательском интерфейсе.
interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
В этом примере тег COST_BUCKET
добавляется к вычислительным процессам:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
Чтобы задать значение по умолчанию для переменной конфигурации Spark, но также разрешить пропускать (удалять) его:
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
дополнительные параметры политики ограничения
Для ограничения типов политик можно указать два дополнительных поля:
-
defaultValue
— значение, которое автоматически заполняется в интерфейсе создания вычислений. -
isOptional
— политика ограничения атрибута автоматически делает его обязательным. Чтобы сделать атрибут необязательным, задайте для поляisOptional
значениеtrue
.
Заметка
Значения по умолчанию не применяются автоматически к вычислениям, созданным с помощьюAPI кластеров apply_policy_default_values
в определение вычислений и задайте для него значение true
.
В этом примере политика указывает значение по умолчанию id1
для пула рабочих узлов, но делает его необязательным. При создании вычислений можно выбрать другой пул или не использовать его. Если driver_instance_pool_id
не определена в политике или при создании вычислений, для рабочих узлов и узла драйвера используется тот же пул.
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
Написание политик для атрибутов массива
Политики атрибутов массива можно указать двумя способами:
- Универсальные ограничения для всех элементов массива. Эти ограничения используют подстановочный символ
*
в пути политики. - Определенные ограничения для элемента массива по определенному индексу. Эти ограничения используют число в пути.
Например, для атрибута массива init_scripts
универсальные пути начинаются с init_scripts.*
и конкретных путей с init_scripts.<n>
, где <n>
является целым индексом в массиве (начиная с 0).
Вы можете объединить универсальные и конкретные ограничения, в этом случае универсальные ограничения применяются к каждому элементу массива, который не имеет определенного ограничения. В каждом случае применяется только одно ограничение политики.
В следующих разделах показаны примеры распространенных примеров, использующих атрибуты массива.
Требовать записи, относящиеся к инклюзивности
Нельзя требовать определенные значения, не указывая порядок. Например:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<required-script-2>"
}
}
Требовать фиксированное значение всего списка
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Запретить использование полностью
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Разрешить записи, которые соответствуют определенному ограничению
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}
Исправление определенного набора скриптов инициализации
В случае init_scripts
путей массив может содержать одну из нескольких структур, для которых может потребоваться обрабатывать все возможные варианты в зависимости от варианта использования. Например, чтобы требовать определенный набор скриптов инициализации и запретить любой вариант другой версии, можно использовать следующий шаблон:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.*.workspace.destination": {
"type": "forbidden"
},
"init_scripts.*.abfss.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}
Примеры политик
В этом разделе приведены примеры политик, которые можно использовать в качестве ссылок для создания собственных политик. Вы также можете использовать семейства политик Azure Databricks, предоставленные в качестве шаблонов для распространенных вариантов использования политик.
- Общая политика вычислений
- Определение ограничений на вычислительные мощности пайплайна Delta Live Tables
- простая политика среднего размера
- политика только для работы
- политика внешнего хранилища метаданных
- Предотвращение использования вычислительных ресурсов в заданиях
- Удаление политики автомасштабирования
- принудительное применение пользовательских тегов
Общая политика вычислений
Политика вычислений общего назначения предназначена для руководства пользователей и ограничения некоторых функций, при этом требуется теги, ограничение максимального количества экземпляров и принудительное время ожидания.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "regex",
"pattern": "12\\.[0-9]+\\.x-scala.*"
},
"node_type_id": {
"type": "allowlist",
"values": [
"Standard_L4s",
"Standard_L8s",
"Standard_L16s"
],
"defaultValue": "Standard_L16s_v2"
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L16s_v2",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 25,
"defaultValue": 5
},
"autotermination_minutes": {
"type": "fixed",
"value": 30,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Установление ограничений на вычислительные ресурсы конвейера Delta Live Tables
Заметка
При использовании политик для настройки вычислений Delta Live Tables Databricks рекомендует применять одну политику к вычислениям как default
, так и maintenance
.
Чтобы настроить политику для вычислительных операций в конвейере, создайте политику с полем cluster_type
, установленным на dlt
. В следующем примере создается минимальная политика для вычислений Delta Live Tables:
{
"cluster_type": {
"type": "fixed",
"value": "dlt"
},
"num_workers": {
"type": "unlimited",
"defaultValue": 3,
"isOptional": true
},
"node_type_id": {
"type": "unlimited",
"isOptional": true
},
"spark_version": {
"type": "unlimited",
"hidden": true
}
}
Политика среднего размера и простая
Позволяет пользователям создавать вычислительные ресурсы среднего размера с минимальной конфигурацией. Единственным обязательным полем при создании является имя вычислительного ресурса; остальные поля заданы по умолчанию и скрыты.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_conf.spark.databricks.cluster.profile": {
"type": "forbidden",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "fixed",
"value": 10,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 60,
"hidden": true
},
"node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"spark_version": {
"type": "fixed",
"value": "auto:latest-ml",
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Политика, применяемая только к заданиям
Позволяет пользователям создавать вычисления заданий для выполнения заданий. Пользователи не могут создавать вычислительные ресурсы всех целей с помощью этой политики.
{
"cluster_type": {
"type": "fixed",
"value": "job"
},
"dbus_per_hour": {
"type": "range",
"maxValue": 100
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"num_workers": {
"type": "range",
"minValue": 1
},
"node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-lts"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Политика внешнего хранилища метаданных
Позволяет пользователям создавать вычислительные ресурсы с уже подключенным хранилищем метаданных, определенным администратором. Это полезно, чтобы пользователи могли создавать собственные вычислительные ресурсы без дополнительной настройки.
{
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
"type": "fixed",
"value": "jdbc:sqlserver://<jdbc-url>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
"type": "fixed",
"value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
},
"spark_conf.spark.databricks.delta.preview.enabled": {
"type": "fixed",
"value": "true"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
"type": "fixed",
"value": "<metastore-user>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
"type": "fixed",
"value": "<metastore-password>"
}
}
Предотвратить использование вычислительных ресурсов для заданий
Эта политика запрещает пользователям использовать вычислительные ресурсы для выполнения заданий. Пользователи смогут использовать только вычислительные ресурсы с записными книжками.
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}
Удаление политики автомасштабирования
Данное правило деактивирует автомасштабирование и позволяет пользователю задать количество рабочих в заданном диапазоне.
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
Принудительное применение пользовательских тегов
Чтобы добавить правило тега вычислений в политику, используйте атрибут custom_tags.<tag-name>
.
Например, любой пользователь, использующий эту политику, должен заполнить тег COST_CENTER
с 9999, 9921 или 9531 для запуска вычислений:
{"custom_tags.COST_CENTER": {"type":"allowlist", "values":["9999", "9921", "9531" ]}}