Справочник по политике вычислений

Эта статья содержит ссылку на определения политик вычислений. В статьях содержится ссылка на доступные атрибуты политики и типы ограничений. Существуют также примеры политик, на которые можно ссылаться для распространенных вариантов использования.

Что такое определения политик?

Определения политик — это отдельные правила политики, выраженные в формате 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 number Значение 0 означает отсутствие автоматического завершения. Если этот элемент скрыт, флажок для выбора автоматического завершения и поле для ввода значения удаляются из пользовательского интерфейса.
azure_attributes.availability строка Управляет вычислительными ресурсами, использующими экземпляры по запросу или точечные экземпляры (ON_DEMAND_AZURE или SPOT_WITH_FALLBACK_AZURE).
azure_attributes.first_on_demand number Управляет количеством узлов, которые будут помещены в экземпляры по запросу.
azure_attributes.spot_bid_price_percent number Управляет максимальной ценой для точечных экземпляров 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.
docker_image.basic_auth.username строка Имя пользователя для обычной проверки подлинности образа службы контейнеров Databricks.
docker_image.url строка Позволяет управлять URL-адресом образа службы контейнеров Databricks. Если этот элемент скрыт, раздел службы контейнеров Databricks удаляется из пользовательского интерфейса.
driver_node_type_id необязательная строка. Если этот элемент скрыт, поле для выбора типа узла драйвера удаляется из пользовательского интерфейса.
enable_local_disk_encryption boolean Задайте значение 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). Вы также можете использовать специальные значения политики, которые динамически выбирают среду выполнения Databricks. Дополнительные значения политики см . в разделе "Специальные значения политики" для выбора среды выполнения Databricks.
workload_type.clients.jobs boolean Определяет, можно ли использовать вычислительный ресурс для заданий. См. раздел "Запрет использования вычислений с заданиями".
workload_type.clients.notebooks boolean Определяет, можно ли использовать вычислительный ресурс с записными книжками. См. раздел "Запрет использования вычислений с заданиями".

Пути к виртуальным атрибутам

Эта таблица включает два дополнительных синтетических атрибута, поддерживаемых политиками:

Путь к атрибуту Тип Описание
dbus_per_hour number Вычисляемый атрибут, представляющий максимальные базы данных, которые ресурс может использовать почасовой основе, включая узел драйвера. Эта метрика является прямым способом управления затратами на отдельном уровне вычислений. Использование с ограничением диапазона.
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: Карты последнюю версию среды выполнения GA Databricks.
  • auto:latest-ml: Карты до последней версии Databricks Runtime ML.
  • auto:latest-lts: Карты последнюю долгосрочную поддержку (LTS) Databricks Runtime.
  • auto:latest-lts-ml: Карты до последней версии машинного обучения среды выполнения LTS Databricks.
  • auto:prev-major: Карты в последнюю версию общедоступной среды выполнения 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: Карты в последнюю версию машинного обучения среды выполнения LTS Databricks. Например, если auto:latest-lts значение равно 13.3, то auto:prev-lts значение 12.2.

Примечание.

Использование этих значений не делает автоматическое обновление вычислений при выпуске новой версии среды выполнения. Чтобы изменить версию среды выполнения Databricks, пользователь должен явно изменить вычислительные ресурсы.

Поддерживаемые типы политик

В этом разделе содержится ссылка для каждого из доступных типов политик. Существует две категории типов политик: фиксированные политики и ограничения политик.

Фиксированные политики препятствуют настройке пользователей в атрибуте. Ниже перечислены два типа фиксированных политик:

Ограничение политик ограничивает параметры пользователя для настройки атрибута. Ограничения политик также позволяют задать значения по умолчанию и сделать атрибуты необязательными. Дополнительные поля политики ограничения см. в разделе "Дополнительные поля политики".

Возможные варианты ограничения политик:

Исправлена политика

Фиксированные политики ограничивают атрибут указанным значением. Для значений атрибутов, отличных от числовых и логических, значение должно быть представлено или преобразовано в строку.

С фиксированными политиками можно также скрыть атрибут из пользовательского интерфейса, задав 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 полей. Значение должно быть дробным (десятичным) числом. Числовые ограничения представляются как значения double с плавающей запятой. Чтобы указать отсутствие определенного ограничения, можно пропустить либо minValuemaxValue.

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 кластеров. Чтобы применить значения по умолчанию с помощью 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, в качестве шаблонов для распространенных вариантов использования политики.

Общая политика вычислений

Политика вычислений общего назначения предназначена для руководства пользователей и ограничения некоторых функций, при этом требуется теги, ограничение максимального количества экземпляров и принудительное время ожидания.

{
  "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 рекомендует применять одну политику как к вычислениям, так и maintenance к вычислительным default ресурсам.

Чтобы настроить политику для вычислений конвейера, создайте политику с заданным полем cluster_typedlt. В следующем примере создается минимальная политика для вычислений 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" ]}}