Gerir as políticas do cluster
Importante
Esta funcionalidade está em Pré-visualização Pública.
Uma política de cluster limita a capacidade de configurar clusters com base num conjunto de regras. As regras de política limitam os atributos ou valores de atributos disponíveis para a criação de clusters. As políticas de cluster têm ACLs que limitam a sua utilização a utilizadores e grupos específicos.
As políticas de cluster permitem::
- Limite os utilizadores a criar clusters com configurações prescritas.
- Simplifique a interface do utilizador e permita que mais utilizadores criem os seus próprios clusters (fixando e escondendo alguns valores).
- Custo de controlo limitando por cluster o custo máximo (estabelecendo limites em atributos cujos valores contribuem para o preço horário).
As permissões de política de cluster limitam quais as políticas que um utilizador pode selecionar na redução da política quando o utilizador cria um cluster:
- Um utilizador que tenha um cluster criar permissão pode selecionar a política de formulários Livres e criar clusters totalmente configuráveis.
- Um utilizador que tenha tanto o cluster cria permissão e acesso às políticas de cluster pode selecionar a política e políticas de formulário Livre a que tem acesso.
- Um utilizador que tenha acesso apenas a políticas de cluster, pode selecionar as políticas a que tem acesso.
Nota
Se não tiverem sido criadas políticas no espaço de trabalho,a política de abandono não se apresenta.
Apenas os utilizadores administrativos podem criar, editar e eliminar políticas. Os utilizadores de administração também têm acesso a todas as políticas.
Este artigo centra-se na gestão de políticas utilizando a UI. Também pode utilizar as APIs políticas de cluster para gerir políticas.
Requisitos
As políticas de cluster requerem o Plano Premium Azure Databricks.
Regras de execução
Pode expressar os seguintes tipos de restrições nas regras políticas:
- Valor fixo com elemento de controlo desativado
- Valor fixo com controlo escondido na UI (o valor é visível na vista JSON)
- Valor de atributo limitado a um conjunto de valores (ou permitem lista ou lista de blocos)
- Valor do atributo correspondente a um dado regex
- Atributo numérico limitado a uma certa gama
- Valor predefinido utilizado pela UI com controlo ativado
Atributos de cluster geridos
As políticas de cluster suportam todos os atributos do cluster controlados com a API clusters. O tipo específico de restrições suportadas pode variar por campo (com base no seu tipo e relação com os elementos de UI forma de cluster).
Além disso, as políticas de cluster suportam os seguintes atributos sintéticos:
- Uma métrica "max DBU-hora", que é o máximo de DBUs que um cluster pode usar de hora a hora. Esta métrica é uma forma direta de controlar o custo a nível de cluster individual.
- Um limite para a fonte que cria o cluster: Serviço de emprego (clusters de emprego), Clusters UI, Clusters REST API (clusters para todos os fins).
Atributos de cluster não geridos
Os seguintes atributos do cluster não podem ser restringidos numa política de cluster:
- Bibliotecas, que são tratadas pela Bibliotecas API. Uma solução alternativa é usar um recipiente personalizado ou um script init.
- Número de agrupamentos criados por utilizador (total ou simultaneamente). O âmbito de uma política é um único cluster, pelo que não há conhecimento dos clusters criados por um utilizador.
- Permissões de cluster (ACLs), que são manuseadas por uma API separada.
Definir uma política de cluster
Você define uma política de cluster numa definição de política JSON, que você adiciona quando cria a política de cluster.
Criar uma política de cluster
Você cria uma política de cluster usando as políticas de cluster UI ou as APIs políticasde cluster . Para criar uma política de cluster utilizando a UI:
Clique no ícone de clusters
na barra lateral.
Clique no separador Políticas de Cluster.
Clique no botão Criar Política.
Diga a apólice. Os nomes das apólices são insensíveis.
No separador Definição, cole uma definição de política.
Clique em Criar.
Gerir permissões de política de cluster
Por definição, os administradores têm permissão para todas as políticas. Pode gerir permissões de política de cluster usando as políticas de cluster UI ou a API de Permissões de Políticade Cluster .
Adicione uma permissão de política de cluster
Para adicionar uma permissão de política de cluster usando a UI:
Clique no ícone de clusters
na barra lateral.
Clique no separador Políticas de Cluster.
Clique no separador Permissões .
Na coluna Nome, selecione um principal.
Na coluna Permisse, selecione uma permissão:
Clique em Adicionar.
Eliminar uma permissão de política de cluster
Para eliminar uma permissão de política de cluster usando a UI:
- Clique no ícone de clusters
na barra lateral.
- Clique no separador Políticas de Cluster.
- Clique no separador Permissões .
- Clique no ícone
ícone na linha de permissão.
Editar uma política de cluster usando a UI
Edita uma política de cluster utilizando as políticas de cluster UI ou as APIs políticasde cluster . Para editar uma política de cluster utilizando a UI:
Clique no ícone de clusters
na barra lateral.
Clique no separador Políticas de Cluster.
Clique num nome de política.
Clique em Editar.
No separador Definição, edite a definição de política.
Clique em Atualizar.
Eliminar uma política de cluster usando a UI
Elimina uma política de cluster utilizando as políticas de cluster UI ou as APIs políticasde cluster . Para eliminar uma política de cluster utilizando a UI:
Clique no ícone de clusters
na barra lateral.
Clique no separador Políticas de Cluster.
Clique num nome de política.
Clique em Eliminar.
Clique em Eliminar para confirmar.
Definições de política de cluster
Uma definição de política de cluster é um documento JSON que consiste numa coleção de definições políticas.
Nesta secção:
- Definições de política
- Elementos políticos
- Percursos de atributos de política de cluster
- Percursos de atributo virtual de política de cluster
- Atributos das matrizes
- Exemplos de política de cluster
Definições de política
Uma definição de política é um mapa entre uma cadeia de caminho que define um atributo e um tipo de limite. Só pode haver uma limitação por atributo. Um caminho é específico para o tipo de recurso e deve refletir o nome de atributo API de criação de recursos. Se a criação de recursos utilizar atributos aninhados, o caminho deve concatenar os nomes de atributos aninhados com pontos. Qualquer atributo não especificado pela apólice é ilimitado.
interface Policy {
[path: string]: PolicyElement
}
Elementos políticos
Um elemento de política especifica um dos tipos de limite suportados num determinado atributo e opcionalmente um valor predefinido. Pode especificar um valor predefinido mesmo que não exista limite no atributo na apólice.
type PolicyElement = FixedPolicy | ForbiddenPolicy | (LimitingPolicyBase & LimitingPolicy);
type LimitingPolicy = AllowlistPolicy | BlocklistPolicy | RegexPolicy | RangePolicy | UnlimitedPolicy;
Esta secção descreve os tipos de política:
- Política fixa
- Política proibida
- Políticas de limitação: campos comuns
- Permitir a política de listas
- Política de lista de blocos
- Política da Regex
- Política de alcance
- Política ilimitada
Política fixa
Limite o valor ao valor especificado. Para valores de atributos que não sejam numéricos e boolean, o valor do atributo deve ser representado por ou descapotável a uma corda.
Opcionalmente, o atributo pode ser escondido na UI quando a hidden
bandeira estiver presente e definida para true
. Uma política fixa não pode especificar um valor predefinido.
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
Exemplo
{
"spark_version": { "type": "fixed", "value": "7.3.x-scala2.12", "hidden": true }
}
Política proibida
Para um atributo opcional, impeça a utilização do atributo.
interface ForbiddenPolicy {
type: "forbidden";
}
Exemplo
{
"instance_pool_id": { "type": "forbidden" }
}
Políticas de limitação: campos comuns
Numa política de limitação pode especificar dois campos adicionais:
defaultValue
- o valor que povoa a forma de criação de clusters na UI.isOptional
- uma política de limitação de um atributo torna-a necessária. Para tornar o atributo opcional, desate oisOptional
campo a verdadeiro.
interface LimitedPolicyBase {
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Exemplo
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
Esta política de exemplo especifica o valor predefinido id1
para o campo Pool, mas torna-o opcional.
Permitir a política de listas
Uma lista de valores permitidos.
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
}
Exemplo
{
"spark_version": { "type": "allowlist", "values": [ "7.2.x-scala2.12", "7.3.x-scala2.12" ] }
}
Política de lista de blocos
A lista de valores proibidos. Uma vez que os valores devem ser exatos, esta política pode não funcionar como esperado quando o atributo é brando na forma como o valor é representado (por exemplo, permitindo espaços de liderança e de fuga).
interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
}
Exemplo
{
"spark_version": { "type": "blocklist", "values": [ "4.0.x-scala2.11" ] }
}
Política da Regex
Limita o valor aos que correspondem ao regex. Por razões de segurança, ao combinar o regex está sempre ancorado ao início e ao fim do valor da corda.
interface RegexPolicy {
type: "regex";
pattern: string;
}
Exemplo
{
"spark_version": { "type": "regex", "value": "5\\.[3456].*" }
}
Política de alcance
Limita o valor ao intervalo especificado pelos minValue
atributos e maxValue
atributos. O valor deve ser um número decimal.
Os limites numéricos devem ser representativos como um duplo valor flutuante. Para indicar a falta de um limite específico, pode omitir um de minValue
maxValue
, .
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
}
Exemplo
{
"num_workers": { "type": "range", "maxValue": 10 }
}
Política ilimitada
Não define limites de valor. Pode utilizar este tipo de política para fazer atributos necessários ou para definir o valor padrão na UI.
interface UnlimitedPolicy {
type: "unlimited";
}
Exemplo
Para exigir a adição da COST_BUCKET
etiqueta:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
Para definir o padrão um valor para uma variável de configuração spark, mas também permitir omitir (remover)
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
Percursos de atributos de política de cluster
A tabela que se segue lista os caminhos de atributos da política de cluster suportado.
Percurso de atributo | Tipo | Description |
---|---|---|
cluster_name |
cadeia (de carateres) | O nome do cluster. |
spark_conf.* |
cadeia opcional | Controle valores de configuração específicos anexando o nome da chave de configuração. Por exemplo, spark_conf.spark.executor.memory . |
instance_pool_id |
string | Quando escondido, remove a seleção da piscina da UI. |
num_workers |
número opcional | Quando ocultada, remove a especificação do número do trabalhador da UI. |
autoscale.min_workers |
número opcional | Quando escondido, remove o campo de número mínimo de trabalhador da UI. |
autoscale.max_workers |
número opcional | Quando escondido, remove o campo de número máximo de trabalhadores da UI. |
autotermination_minutes |
número | O valor de 0 não representa nenhuma rescisão automática. Quando ocultada, remove a caixa de verificação de terminação automática e a entrada de valor da UI. |
node_type_id |
string | Quando escondido, remove a seleção do tipo de nó do trabalhador da UI. |
driver_node_type_id |
cadeia opcional | Quando ocultado, remove a seleção do tipo de nó condutor da UI. |
custom_tags.* |
string | Controle valores específicos da etiqueta, anexando o nome da etiqueta. Por exemplo, custom_tags.<mytag> . |
spark_version |
string | Nome da versão de imagem spark (conforme especificado via API). |
docker_image.url |
string | Controla o URL de imagem dos serviços de contentores databricks. Quando ocultado, remove a secção de Serviços de Contentores databricks da UI. |
docker_image.basic_auth.username |
string | Nome de utilizador para a autenticação básica dos Serviços de Contentores databricks. |
docker_image.basic_auth.password |
string | Palavra-passe para a autenticação básica dos Serviços de Contentores databricks. |
cluster_log_conf.type |
string | DBFS |
cluster_log_conf.path |
string | URL de destino dos ficheiros de registo. |
single_user_name |
string | Nome do utilizador para acesso de um único utilizador. |
init_scripts.*.dbfs.destination , init_scripts.*.file.destination |
string | * refere-se ao índice do script init na matriz de atributos, ver atributos Array. |
Percursos de atributo virtual de política de cluster
Percurso de atributo | Tipo | Descrição |
---|---|---|
dbus_per_hour |
número | Atributo calculado que representa (máximo, no caso de clusters de autoescalagem) Custo DBU do cluster, incluindo o nó condutor. Para utilização com limitação de alcance. |
cluster_type |
string | Representa o tipo de cluster que pode ser criado: * all-purpose para clusters para todos os fins da Azure Databricks* job para clusters de emprego criados pelo agendador de empregoPermitir ou bloquear tipos de clusters especificados a serem criados a partir da política. Se o all-purpose valor não for permitido, a política não é mostrada no formulário de criação de cluster para todos os fins. Se o job valor não for permitido, a política não é mostrada no novo formulário de cluster de emprego. |
Atributos das matrizes
Pode especificar políticas para atributos de matriz de duas formas:
- Limitações genéricas para todos os elementos de matriz. Estas limitações usam o
*
símbolo wildcard no caminho da política. - Limitações específicas para um elemento de matriz num índice específico. Estas limitações usam um número no caminho.
Por exemplo, para o atributo init_scripts
matriz, os caminhos genéricos começam com init_scripts.*
e os caminhos específicos com , onde init_scripts.<n>
está um índice inteiro na matriz <n>
(começando com 0).
Pode combinar limitações genéricas e específicas, caso em que a limitação genérica se aplica a cada elemento de matriz que não tem uma limitação específica. Em cada caso, apenas se aplicará uma limitação da política.
Os casos típicos de utilização para as políticas de matriz são:
Requerem entradas específicas para a inclusão. Por exemplo:
{ "init_scripts.0.dbfs.destination": { "type": "fixed", "value": "<required-script-1>" }, "init_scripts.1.dbfs.destination": { "type": "fixed", "value": "<required-script-2>" } }
Não é possível exigir valores específicos sem especificar a encomenda.
Requer um valor fixo de toda a lista. Por exemplo:
{ "init_scripts.0.dbfs.destination": { "type": "fixed", "value": "<required-script-1>" }, "init_scripts.*.dbfs.destination": { "type": "forbidden" } }
Não permite a utilização completamente.
{ "init_scripts.*.dbfs.destination": { "type": "forbidden" } }
Permitir qualquer número de entradas, mas apenas seguindo uma restrição específica. Por exemplo:
{ "init_scripts.*.dbfs.destination": { "type": "regex", "pattern": ".*<required-content>.*" } }
Em caso de init_scripts
caminhos, a matriz pode conter uma de múltiplas estruturas para as quais todas as variantes possíveis podem precisar de ser manuseadas dependendo da caixa de utilização. Por exemplo, para exigir um conjunto específico de scripts init, e não permitir qualquer variante da outra versão, pode usar o seguinte padrão:
{
"init_scripts.1.dbfs.destination": {
"type": "fixed",
"value": "dbfs://<dbfs-path>"
},
"init_scripts.*.dbfs.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
},
}
Exemplos de política de cluster
Nesta secção:
- Política geral de clusters
- Política simples de média dimensão
- Política de emprego
- Política de nó único
- Política de passagem de Alta Concurrency
- Política externa de metastões
Política geral de clusters
Uma política geral de cluster destinada a orientar os utilizadores e a restringir algumas funcionalidades, ao mesmo tempo que requer tags, limitando o número máximo de casos e aplicando o tempo limite.
{
"spark_conf.spark.databricks.cluster.profile": {
"type": "fixed",
"value": "serverless",
"hidden": true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "regex",
"pattern": "7\\.[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"
}
}
Política simples de média dimensão
Permite que os utilizadores criem um cluster de tamanho médio com configuração mínima. O único campo necessário no momento da criação é o nome do cluster; o resto é fixo e escondido.
{
"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": "7.3-scala2.12",
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Política de emprego
Permite que os utilizadores criem clusters de emprego e gerem empregos utilizando o cluster. Os utilizadores não podem criar um cluster para todos os fins usando esta política.
{
"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": "regex",
"pattern": "7\\.[0-9]+\\.x-scala.*"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Política de nó único
Permite que os utilizadores criem um cluster single nó sem trabalhadores e Spark ativado. Pode encontrar o exemplo das políticas de nó único na política de cluster single nó.
Política de passagem de Alta Concurrency
Permite que os utilizadores criem clusters no modo De Alta Concurrency que tenham passthrough ativado por padrão. Isto simplifica a configuração para a administração, uma vez que os utilizadores teriam de definir manualmente os parâmetros de faísca apropriados.
{
"spark_conf.spark.databricks.passthrough.enabled": {
"type": "fixed",
"value": "true"
},
"spark_conf.spark.databricks.repl.allowedLanguages": {
"type": "fixed",
"value": "python,sql"
},
"spark_conf.spark.databricks.cluster.profile": {
"type": "fixed",
"value": "serverless"
},
"spark_conf.spark.databricks.pyspark.enableProcessIsolation": {
"type": "fixed",
"value": "true"
},
"custom_tags.ResourceClass": {
"type": "fixed",
"value": "Serverless"
}
}
Política externa de metastões
Permite que os utilizadores criem um cluster com uma meta-loja definida por administração já anexada. Isto é útil para permitir que os utilizadores criem os seus próprios clusters sem necessitar de configuração adicional.
{
"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>"
}
}