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 aos atributos cujos valores contribuem para o preço horária).

Para uma introdução às políticas de cluster e recomendações de configuração, consulte o vídeo das políticas de cluster databricks:

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 sem restrições 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 sem restrições 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 de administração 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 Políticas de Cluster APIs 2.0 para gerir políticas.

Requisitos

As políticas de cluster requerem o Plano de Premium de Dados Azure.

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 dos Clusters 2.0. 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 empregos (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 por Bibliotecas API 2.0. 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 adiciona quando cria a política de cluster.

Criar uma política de cluster

Cria uma política de cluster utilizando as políticas de cluster UI ou as Políticas de Cluster APIs 2.0. Para criar uma política de cluster utilizando a UI:

  1. Clique em computar íconeCompute na barra lateral.

  2. Clique no separador Políticas de Cluster.

    Separador de Políticas de Cluster

  3. Clique no botão Criar Política.

    Insira o nome da política do cluster

  4. Diga a apólice. Os nomes das políticas são insensíveis a casos.

  5. No separador Definição, cole uma definição de política.

  6. Clique em Criar.

Clonar uma política de cluster existente

Pode criar uma política de cluster clonando uma política existente. Para clonar uma política de cluster usando a UI:

  1. Clique em computar íconeCompute na barra lateral.
  2. Clique no separador Políticas de Cluster.
  3. Clique no nome da apólice que pretende clonar.
  4. Clique em Clone.
  5. Na página seguinte, todos os campos são pré-povoados com valores da política existente. Alterar os valores dos campos que pretende modificar e, em seguida, clicar 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:

  1. Clique em computar íconeCompute na barra lateral.

  2. Clique no separador Políticas de Cluster.

  3. Clique no separador Permissões .

  4. Na coluna Nome, selecione um principal.

    Principal de permissão de política

  5. Na coluna 'Permissão', selecione uma permissão:

    Permissão de política

  6. 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:

  1. Clique em computar íconeCompute na barra lateral.
  2. Clique no separador Políticas de Cluster.
  3. Clique no separador Permissões .
  4. Clique no ícone de ícone de exclusão 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 Políticas de Cluster APIs 2.0. Para editar uma política de cluster utilizando a UI:

  1. Clique em computar íconeCompute na barra lateral.

  2. Clique no separador Políticas de Cluster.

    Imagem do separador de políticas de cluster

  3. Clique num nome de política.

  4. Clique em Editar.

  5. No separador Definição, edite a definição de política.

  6. 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 Políticas de Cluster APIs 2.0. Para eliminar uma política de cluster utilizando a UI:

  1. Clique em computar íconeCompute na barra lateral.

  2. Clique no separador Políticas de Cluster.

    Separador de Políticas de Cluster selecionado

  3. Clique num nome de política.

  4. Clique em Eliminar.

  5. Clique em Eliminar para confirmar.

Definições de política de cluster

Uma definição de política de cluster é uma coleção de definições políticas individuais expressas no JSON.

Nesta secção:

Definições de política

Uma definição de política é um mapa entre uma cadeia de caminhos 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 reflete o nome de atributo API de criação de recursos. Se a criação de recursos utilizar atributos aninhados, o caminho concatena os nomes de atributos aninhados usando pontos. Os atributos que não são definidos na definição de política são ilimitados quando se cria um cluster utilizando a política.

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 sem definir um 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

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

Esta política proíbe a fixação de piscinas ao aglomerado para nós operários. As piscinas também são proibidas para o nó do condutor, porque driver_instance_pool_id herda a apólice.

{
  "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 o isOptional campo em realidade.
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 padrão id1 para o pool para nós de trabalhadores, mas torna-o opcional. Ao criar o cluster, pode selecionar uma piscina diferente ou optar por não utilizar uma. Se driver_instance_pool_id não estiver definido na política ou na criação do cluster, a mesma piscina é utilizada para nós de trabalhadores e para o nó do condutor.

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 combinam com o 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 minValuemaxValue , .

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
autoscale.max_workers número opcional Quando escondido, remove o campo de número máximo de trabalhadores da UI.
autoscale.min_workers número opcional Quando escondido, remove o campo de número mínimo de trabalhador da UI.
autotermination_minutes número Um valor de 0 não representa rescisão automática. Quando ocultada, remove a caixa de verificação de terminação automática e a entrada de valor da UI.
cluster_log_conf.path string O URL de destino dos ficheiros de registo.
cluster_log_conf.type string DBFS
cluster_name string O nome do agrupamento.
custom_tags.* string Controlar valores específicos da etiqueta, anexando o nome da etiqueta, por exemplo: custom_tags.<mytag> .
docker_image.basic_auth.password string A palavra-passe para a autenticação básica dos Serviços de Contentores databricks.
docker_image.basic_auth.username string O nome de utilizador da autenticação básica dos Serviços de Contentores databricks.
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.
driver_node_type_id cadeia opcional Quando ocultado, remove a seleção do tipo de nó do condutor da UI.
enable_local_disk_encryption boolean Configurar true para permitir, ou false desativar, discos encriptados que estejam ligados localmente ao cluster (conforme especificado através da API).
init_scripts.*.dbfs.destination, init_scripts.*.file.destination string * refere-se ao índice do script init na matriz de atributos. Ver atributos Array.
instance_pool_id string Controla a piscina utilizada pelos nós dos trabalhadores se driver_instance_pool_id também for definida, ou para todos os nós de cluster de outra forma. Se utilizar piscinas para nós de trabalhadores, também deve utilizar piscinas para o nó do condutor. Quando escondido, remove a seleção da piscina da UI.
driver_instance_pool_id string Se especificado, configura uma piscina diferente para o nó do condutor do que para os nós do trabalhador. Se não for especificado, herda instance_pool_id . Se utilizar piscinas para nós de trabalhadores, também deve utilizar piscinas para o nó do condutor. Quando escondido, remove a seleção da piscina do condutor da UI.
node_type_id string Quando ocultado, remove a seleção do tipo de nó do trabalhador da UI.
num_workers número opcional Quando ocultada, remove a especificação do número do trabalhador da UI.
single_user_name string O nome de utilizador para o acesso de um único utilizador.
spark_conf.* cadeia opcional Controla valores de configuração específicos, anexando o nome da chave de configuração, por exemplo: spark_conf.spark.executor.memory .
spark_env_vars.* cadeia opcional Controla valores específicos de variáveis do ambiente Spark, anexando a variável ambiental, por exemplo: spark_env_vars.<environment variable name> .
spark_version string O nome da versão de imagem Spark (conforme especificado através da API).

Percursos de atributo virtual de política de cluster

Percurso de atributo Tipo Description
dbus_per_hour número Atributo calculado que representa (máximo, no caso de clusters de autoscalagem) 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 a Azure Databricks clusters para todos os fins
* job para aglomerados de emprego criados pelo agendador de emprego

Permitir ou bloquear tipos de agrupamentos 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 de 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 permitir totalmente a utilização.

    {
      "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 ter 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 agrupamentos

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.x-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 usando o cluster. Os utilizadores não podem criar um cluster para todos os fins utilizando 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 nós de trabalhador com faísca ativada no modo local. Por exemplo, consulte as políticas de agrupamento de nó único.

Política de passagem de Alta Concurrency

Permite que os utilizadores criem clusters em modo De Alta Concurrency com passthrough ativado por padrão. Desta forma, os utilizadores não precisam 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 administradores 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>"
  }
}