Partilhar via


Usar scripts de inicialização com escopo de cluster

Scripts de inicialização com escopo de cluster são scripts de inicialização definidos em uma configuração de cluster. Os scripts de inicialização com escopo de cluster aplicam-se tanto aos clusters criados 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 obter 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 cluster configurando a entrega do log de cluster e examinando o log de script de inicialização. Consulte Log de script de inicialização.

Configurar um script de inicialização com escopo 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.

O Databricks recomenda o gerenciamento de todos os scripts init como scripts init com escopo de cluster. Se você estiver usando computação com modo de acesso compartilhado ou 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 allowlistmodo de acesso compartilhado, você deve adicionar scripts init ao . Consulte Bibliotecas Allowlist e scripts init em computação compartilhada.

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 no botão Opções Avançadas.
  2. Na parte inferior da página, clique na guia Scripts de inicialização .
  3. Na lista suspensa Origem, selecione o tipo de origem Espaço de trabalho, Volume ou ABFSS.
  4. Especifique um caminho para o script init, como um dos seguintes exemplos:
    • Para um script init armazenado em seu diretório inicial com arquivos de espaço de trabalho: /Users/<user-name>/<script-name>.sh.
    • Para um script init armazenado com 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 de usuário único, a identidade da entidade atribuída (um usuário ou entidade de serviço) é usada.

No modo de acesso compartilhado, a identidade do proprietário do cluster é usada.

Nota

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

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 tipo de origem ABFSS, deverá configurar as credenciais de acesso.

O Databricks recomenda o uso de entidades de serviço do Microsoft Entra ID para gerenciar o acesso a scripts de inicialização armazenados no Azure Data Lake Storage Gen2. Use a seguinte documentação vinculada para concluir essa configuração:

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

  2. Salve suas credenciais usando segredos. Veja 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 escopo de cluster no DBFS estão em fim de vida. 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 init do DBFS.

Solução de problemas de scripts init com escopo 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.