Partilhar via


Scripts de inicialização de âmbito de cluster

Scripts de inicialização com escopo de cluster são scripts de inicialização definidos numa configuração de cluster. Os scripts de inicialização com escopo de cluster aplicam-se tanto aos clusters que você cria quanto aos criados automaticamente para executar trabalhos.

Você pode configurar scripts de inicialização com escopo de cluster usando a interface do usuário, a CLI e invocando a API de Clusters. Esta seção se concentra na execução dessas tarefas usando a interface do usuário. Para os outros métodos, consulte a CLI do Databricks e a API de Clusters.

Você pode adicionar qualquer número de scripts, e os scripts são executados sequencialmente na ordem fornecida.

Se um script de inicialização com escopo de cluster retornar um código de saída diferente de zero, a inicialização do cluster falhará. Você pode solucionar problemas de scripts de inicialização com escopo de clusters configurando a entrega de logs de cluster e examinando o log do script de inicialização. Consulte o registo do script de inicialização.

Configurar um script de inicialização com âmbito de cluster usando a interface do usuário

Esta seção contém instruções para configurar um cluster para executar um script init usando a interface do usuário do Azure Databricks.

Databricks recomenda o gerenciamento de todos os scripts de inicialização como scripts de inicialização com escopo de cluster. Se você estiver usando computação com modo de acesso padrão ou dedicado (anteriormente modos de acesso compartilhado e de usuário único), armazene scripts de inicialização nos volumes do Catálogo Unity. Se você estiver usando computação com modo de acesso compartilhado sem isolamento, use arquivos de espaço de trabalho para scripts de inicialização.

Para o modo de acesso padrão, deve-se adicionar scripts de inicialização ao allowlist. Consulte bibliotecas de Lista de Permissões e scripts de inicialização em computadores com o modo de acesso padrão (anteriormente modo de acesso compartilhado).

Para usar a interface do usuário para configurar um cluster para executar um script init, conclua as seguintes etapas:

  1. Na página de configuração do cluster, clique na alternância Avançado.
  2. Na parte inferior da página, clique no separador Scripts de inicialização.
  3. Na lista suspensa de origem , selecione o Espaço de trabalho, Volumeou ABFSS como tipo de origem.
  4. Especifique um caminho para o script init, como um dos seguintes exemplos:
    • Para um script init armazenado em seus arquivos de espaço de trabalho: /Workspace/<path-to-script>/<script-name>.sh
    • Para um script de inicialização armazenado nos volumes do Catálogo Unity: /Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh
    • Para um script init armazenado com armazenamento de objetos: abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/init-script
  5. Clique em Adicionar.

No modo de acesso dedicado, a identidade da entidade atribuída (um usuário ou entidade de serviço) é usada.

No modo de acesso padrão, a identidade do proprietário do cluster é usada.

Nota

O modo de acesso compartilhado sem isolamento não suporta volumes, mas usa a mesma atribuição de identidade que o modo de acesso padrão.

Para remover um script da configuração do cluster, clique no ícone da lixeira à direita do script. Quando confirmar a eliminação, ser-lhe-á pedido para reiniciar o cluster. Opcionalmente, você pode excluir o arquivo de script do local para o qual o carregou.

Nota

Se você configurar um script init usando o ABFSS tipo de origem, deverá configurar as credenciais de acesso.

A Databricks recomenda utilizar entidades de serviço do Microsoft Entra ID para gerir o acesso a scripts de inicialização armazenados no Armazenamento do Azure Data Lake. Use a seguinte documentação vinculada para concluir essa configuração:

  1. Crie um principal do serviço com permissões de leitura e listagem nos blobs desejados. Consulte Acessar armazenamento usando uma entidade de serviço & Microsoft Entra ID(Azure Ative Directory).

  2. Salve suas credenciais usando segredos. Consulte Gerir segredos.

  3. Defina as propriedades na configuração do Spark e as variáveis ambientais ao criar um cluster, como no exemplo a seguir:

    Configuração do Spark:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    Variáveis ambientais:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (Opcional) Refatore scripts de inicialização usando azcopy ou a CLI do Azure.

    Você pode fazer referência a variáveis ambientais definidas durante a configuração do cluster em seus scripts de inicialização para passar credenciais armazenadas como segredos para validação.

Aviso

Os scripts de inicialização com âmbito de cluster no DBFS estão descontinuados. A opção DBFS na interface do usuário existe em alguns espaços de trabalho para dar suporte a cargas de trabalho herdadas e não é recomendada. Todos os scripts init armazenados no DBFS devem ser migrados. Para obter instruções de migração, consulte Migrar scripts de inicialização do DBFS.

Solução de problemas de scripts init com âmbito de cluster

  • O script deve existir no local configurado. Se o script não existir, as tentativas de iniciar o cluster ou aumentar a escala dos executores resultarão em falha.
  • O script init não pode ser maior que 64KB. Se um script exceder esse tamanho, o cluster falhará ao iniciar e uma mensagem de falha aparecerá no log do cluster.