Поделиться через


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

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

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

Определения политик — это отдельные правила политики, выраженные в формате 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, пользователь должен явно изменить настройки вычислений.

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

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

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

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

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

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

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

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