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:

  1. Clique no ícone de clusters Ícone de clusters na barra lateral.

  2. Clique no separador Políticas de Cluster.

    Criar política

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

    Criar política

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

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

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

  1. Clique no ícone de clusters Ícone de clusters 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 Permisse, 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 no ícone de clusters Ícone de clusters na barra lateral.
  2. Clique no separador Políticas de Cluster.
  3. Clique no separador Permissões .
  4. Clique no ícone Eliminar í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:

  1. Clique no ícone de clusters Ícone de clusters na barra lateral.

  2. Clique no separador Políticas de Cluster.

    Criar política

  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 APIs políticasde cluster . Para eliminar uma política de cluster utilizando a UI:

  1. Clique no ícone de clusters Ícone de clusters na barra lateral.

  2. Clique no separador Políticas de Cluster.

    Criar política

  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 é um documento JSON que consiste numa coleção de definições políticas.

Nesta secção:

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

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 o isOptional 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 emprego

Permitir 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

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>"
  }
}