Práticas recomendadas de configuração de computação clássica

Esta página descreve as práticas recomendadas para configurar recursos de computação clássicos. Para a maioria das novas cargas de trabalho, o Databricks recomenda usar a computação sem servidor, o que não exige nenhuma configuração. Se sua carga de trabalho não tiver suporte na computação sem servidor (consulte limitações sem servidor), use as práticas recomendadas a seguir para configurar um recurso de computação clássico.

Observação

Fluxos de trabalho de streaming estruturados têm recomendações de configuração específicas. Confira Considerações de produção para o Streaming estruturado.

Modo de acesso

Os recursos de computação clássicos podem ser atribuídos ao modo de acesso padrão ou dedicado, que determina quem pode anexar e usar o recurso de computação.

O Databricks recomenda usar o modo de acesso padrão para a maioria das cargas de trabalho. A computação padrão pode ser compartilhada por vários usuários e grupos ao mesmo tempo em que impõe o isolamento do usuário e todas as permissões de acesso a dados. Isso torna uma opção mais fácil de gerenciar e econômica para a maioria das cargas de trabalho.

Use apenas o modo de acesso dedicado se sua carga de trabalho tiver limitações de computação padrão específicas, como o ML Runtime em GPU, APIs RDD ou R. Para obter mais informações, consulte requisitos e limitações de computação padrão.

Se o Catálogo do Unity estiver habilitado, não defina spark.databricks.passthrough.enabled. A passagem de credenciais é um modo de acesso herdado que não é compatível com o Catálogo do Unity.

Consulte Modos de acesso.

Versão do Databricks Runtime

Use a versão mais recente do Databricks Runtime com suporte de longo prazo (LTS). As versões lts recebem patches de segurança estendidos e correções de bug, garantindo que suas cargas de trabalho permaneçam estáveis e compatíveis com os recursos mais recentes da plataforma.

Selecione apenas um runtime de machine learning se sua carga de trabalho usar GPUs, treinamento de ML distribuído ou AutoML. O Databricks Runtime para ML instala um grande conjunto de bibliotecas que podem entrar em conflito com suas próprias dependências se não forem necessárias, causando erros ou problemas de exatidão silenciosos. Consulte Treinar modelos de IA e ML.

Higiene de configuração

Essas práticas mantêm suas configurações de computação limpas e suas cargas de trabalho portáteis.

Evite usar scripts de inicialização

Os scripts init podem introduzir comportamentos inesperados, incluindo conflitos de biblioteca que interrompem cargas de trabalho e tornam os ambientes menos previsíveis. Em vez disso, adicione bibliotecas às políticas de computação, use %pip install em notebooks ou defina dependências em uma especificação de ambiente. Consulte Adicionar bibliotecas a uma política.

Evite codificar diretamente as configurações do Spark

Evite codificar configurações do Spark (como spark.executor.memory ou spark.dynamicAllocation.*) em definições de computação ou trabalho. Valores codificados substituem as otimizações internas que Azure Databricks fornece, muitas vezes levando a gastos desperdiçados ou desempenho degradado. Use configurações de sessão com escopo no notebook somente quando você tiver um motivo específico para substituir um padrão.

Evitar caminhos de armazenamento local de computação

Não armazene dados em caminhos de computação local, que não persistem além do ciclo de vida da computação. Em vez disso, use volumes do Unity Catalog ou armazenamento temporário. Veja O que são volumes?.

Evitar montagens do DBFS

As montagens DBFS não têm ACLs (listas de controle de acesso) adequadas. Em vez disso, use volumes do Catálogo do Unity ou sistemas de arquivos do workspace (WSFS). Veja O que são volumes?.

Evite instalar bibliotecas restritas ao ambiente de computação

Instalar bibliotecas no nível da computação cria um descompasso de ambiente entre trabalhos. Em vez disso, use %pip install em notebooks ou defina dependências em uma especificação de ambiente. Isso também facilita a migração de cargas de trabalho clássicas para sem servidor.

Performance

Avaliar se você se beneficiaria do Photon

Muitas cargas de trabalho se beneficiam do Photon, mas é mais benéfico para cargas de trabalho SQL e operações de DataFrame que envolvem transformações complexas, como junções, agregações e verificações de dados em tabelas grandes. Cargas de trabalho com acesso frequente ao disco, tabelas largas ou processamento de dados repetidos também veem um desempenho aprimorado.

Trabalhos simples de ETL em lotes que não envolvem grandes transformações ou grandes volumes de dados podem ver impacto mínimo ao habilitar o Photon, especialmente se as consultas normalmente forem concluídas em menos de dois segundos.

Usar o dimensionamento automático

Configure o dimensionamento automático para que as tarefas de longa duração possam adicionar e remover dinamicamente nós de trabalho durante as execuções de trabalho. Veja Habilitar escalonamento automático.

Usar pools de instâncias para reduzir o tempo de inicialização

Os pools de instância reservam recursos de computação do seu provedor de nuvem. Os pools diminuem a hora de início do novo cluster e garantem a disponibilidade do recurso de computação. Confira Referência de configuração do pool.

Otimização de custos

Usar políticas de computação

Azure Databricks recomenda usar políticas de computação. As políticas de computação permitem que você crie recursos de computação pré-configurados projetados para fins específicos, como computação pessoal, computação compartilhada, usuários avançados e trabalhos. As políticas limitam as decisões que você precisa tomar ao definir as configurações de computação.

Se você não tiver acesso às políticas, entre em contato com o administrador do workspace. Consulte políticas padrão e famílias de políticas.

Usar instâncias spot

Configure instâncias spot para cargas de trabalho com requisitos de latência relaxados para otimizar os custos. Consulte Instâncias spot.

Considerações sobre o dimensionamento da computação

Observação

As recomendações a seguir pressupõem que você tenha permissão irrestrita para criar clusters. Os administradores do workspace só devem conceder este privilégio a usuários avançados.

As pessoas costumam pensar no tamanho da computação em termos do número de trabalhos, mas existem outros fatores importantes a considerar:

  • Total de núcleos de executor (computação): o número total de núcleos em todos os executores. Isso determina o paralelismo máximo de uma computação.
  • Memória total do executor: a quantidade total de RAM em todos os executores. Isso determina quantos dados podem ser armazenados na memória antes de serem despejados no disco.
  • Armazenamento local do executor: o tipo e a quantidade de armazenamento em disco local. O disco local usado principalmente no caso de despejos durante embaralhamentos e cache.

Considerações adicionais incluem o tipo e o tamanho da instância de trabalho, que também influenciam os fatores acima. Ao dimensionar sua computação, pense no seguinte:

  • Quantos dados sua carga de trabalho consumirá?
  • Qual é a complexidade computacional da carga de trabalho?
  • De onde você está lendo dados?
  • Como os dados são particionados no armazenamento externo?
  • De quanto paralelismo você precisa?

É uma questão de equilíbrio entre o número de trabalhos e o tamanho dos tipos de instância de trabalho. Configurar a computação com dois trabalhos, cada um com 16 núcleos e 128 GB de RAM, resulta na mesma computação e memória que configurar a computação com 8 funções de trabalho, 4 núcleos e 32 GB de RAM.

Exemplos de configuração de computação

Os exemplos a seguir mostram recomendações de computação com base em tipos específicos de cargas de trabalho. Esses exemplos também incluem configurações para evitar e por que essas configurações não são adequadas para os tipos de carga de trabalho.

Observação

Todos os exemplos nesta seção podem se beneficiar do uso da computação sem servidor em vez de criar um novo recurso de computação. Se sua carga de trabalho não for compatível com o modelo sem servidor, use as recomendações abaixo para configurar seu recurso de computação clássico.

Análise de dados

Os analistas de dados normalmente realizam processamentos que exigem dados de várias partições, o que leva a muitas operações de redistribuição. Um recurso de computação com um número menor de nós maiores pode reduzir o tamanho da rede e das E/S de disco necessárias para executar esses rearranjos de dados.

Uma computação de nó único com um tipo de VM grande é provavelmente a melhor opção, especialmente para um único analista.

As cargas de trabalho analíticas provavelmente exigirão a leitura dos mesmos dados repetidamente, portanto, os tipos de nós recomendados são otimizados para armazenamento com cache de disco ativado ou instâncias com armazenamento local.

Recursos adicionais recomendados para cargas de trabalho analíticas incluem:

  • Habilite a terminação automática para garantir que a computação seja encerrada após um período de inatividade.
  • Considere habilitar o dimensionamento automático com base na carga de trabalho típica do analista.

ETL básico em lote

Para trabalhos simples de ETL em lotes que não exigem transformações amplas, como junções ou agregações, use instâncias com requisitos mais baixos para memória e armazenamento. Isso pode resultar em economia de custos em relação a outros tipos de trabalho.

ETL complexo em lote

Para um trabalho complexo de ETL, como um que exija uniões e junções em várias tabelas, o Azure Databricks recomenda usar menos trabalhos para reduzir a quantidade de dados embaralhados. Para compensar ter menos trabalhadores, aumente o tamanho de suas instâncias.

Transformações complexas podem ser de computação intensiva. Se você observar um derramamento significativo em disco ou erros de OOM, aumente a quantidade de memória disponível em suas instâncias.

Opcionalmente, use pools de instâncias para diminuir os tempos de inicialização de computação e reduzir o runtime total ao executar pipelines de trabalho.

Treinamento de modelos de machine learning

Para treinar modelos de machine learning, Azure Databricks recomenda a criação de um recurso de computação usando a política de computação pessoal.

Use uma computação de nó único com um tipo de nó grande para experimentação inicial. Ter menos nós reduz o impacto de embaralhamentos.

Adicionar mais trabalhos pode ajudar com a estabilidade, mas evite adicionar muitos trabalhos devido à sobrecarga de dados aleatórios.

Os tipos de trabalho recomendados são otimizados para armazenamento com cache de disco habilitado ou uma instância com armazenamento local, para considerar leituras repetidas dos mesmos dados e habilitar o cache de dados de treinamento.

Entre os recursos adicionais recomendados para cargas de trabalho de machine learning estão:

  • Habilite a terminação automática para garantir que a computação seja encerrada após um período de inatividade.
  • Use grupos de instâncias, que permitem restringir os recursos computacionais a um tipo de instância pré-aprovado.
  • Garanta configurações de computação consistentes usando políticas.