Melhore a confiabilidade do lançamento de compute usando tipos de nós flexíveis.
Os recursos compute clássicos no Databricks usam tipos de nós flexíveis, o que permite que seu recurso compute recorra a tipos de instância alternativos e compatíveis quando o tipo de instância especificado não estiver disponível.
Esse comportamento melhora a confiabilidade do lançamento de compute , reduzindo falhas de capacidade (erros de falta de estoque) durante os compute . Para instâncias spot com fallback, os tipos de nós flexíveis podem tentar adquirir instâncias várias vezes em diferentes tipos de instância antes de recorrer a instâncias sob demanda. Isso resulta em uma porcentagem maior de instâncias executadas como instâncias spot em vez de sob demanda, reduzindo seus custos totais compute .
Como funcionam os tipos de nós flexíveis
Ao iniciar um recurso compute , seu provedor cloud às vezes pode ficar sem capacidade para o tipo de instância especificado. Isso resulta em um erro de falta de estoque:
GCP_INSUFFICIENT_CAPACITY
Embora esses erros sejam mais comuns em instâncias spot, eles também podem ocorrer em instâncias sob demanda.
Com os tipos de nós flexíveis ativados, o Databricks gera automaticamente ou utiliza a sua lista de fallback especificada de tipos de instância compatíveis. Se o tipo de instância preferido não estiver disponível, o Databricks tentará adquirir esses tipos de instância de backup em vez de falhar imediatamente.
Habilite tipos de nós flexíveis em seu workspace
Os administradores do espaço de trabalho podem ativar tipos de nós flexíveis nas configurações de administração workspace . Quando ativada, toda nova função compute clássica passa automaticamente a utilizar tipos de nós alternativos. Os recursos compute de uso geral existentes não serão afetados. Consulte "Como as cargas de trabalho existentes são afetadas?".
Para habilitar tipos de nós flexíveis em um workspace:
- Como administrador workspace , acesse a página de configurações.
- Clique na aba Compute .
- Ative ou desative a configuração "Habilitar tipos de nós flexíveis automáticos" :
- Ativado : Todos os novos recursos compute clássicos usam automaticamente tipos de nós flexíveis, a menos que sejam explicitamente desativados.
- Desativado : O recurso compute clássico só usa tipos de nó flexíveis se você configurar explicitamente
node_type_flexibilityna configuração do recurso compute .
Se esta configuração estiver desativada, os usuários ainda poderão configurar tipos de nós flexíveis para recursos compute individuais, configurando explicitamente os campos worker_node_type_flexibility ou driver_node_type_flexibility com listas fallback personalizadas. Para impedir que os usuários configurem esses campos, os administradores workspace podem usar políticas compute . Veja exemplos de políticas flexíveis de tipo de nó.
Especifique uma lista de fallback personalizada
Quando os tipos de nós flexíveis estão habilitados em seu workspace, Databricks gera automaticamente uma lista fallback de tipos de instância compatíveis para novos recursos compute .
Se você não quiser usar a lista de fallback gerada automaticamente, pode especificar sua própria lista de fallback. Além disso, mesmo que os tipos de nós flexíveis estejam desativados em seu workspace, você ainda poderá especificar uma lista fallback personalizada para seu recurso compute . Apenas determinados tipos de instâncias são compatíveis. Consulte os requisitos de tipo de instância de fallback. Para obter uma lista de tipos de instância compatíveis, consulte a referência de compatibilidade de tipos de nó flexíveis.
Listas fallback personalizadas são suportadas apenas ao configurar compute usando a API. Consulte a documentação de referência APIde clusters .
Por exemplo, a seguinte configuração especifica qual tipo de instância o recurso compute utilizará como alternativa, se necessário:
"worker_node_type_flexibility": {
"alternate_node_type_ids": [
"n2-highmem-8"
]
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": [
"n2-highmem-8"
]
},
Requisitos de tipo de instância de fallback
Os tipos de instância de fallback devem ser compatíveis com o tipo de instância preferencial do compute. Sua lista de tipos de instância de fallback deve atender aos seguintes requisitos:
-
Mesma quantidade de vCPUs e memória que o tipo de instância preferencial (instâncias de fallback devem ter entre 100% e 110% da memória do tipo de instância preferencial).
-
Mesmo número de discos locais e tamanho de disco que o tipo de instância preferencial.
-
Mesma arquitetura de CPU que o tipo de instância preferido (todas ARM ou todas x86)
-
Mesma imagem do sistema operacional e suporte ao Photon que o tipo de instância preferencial.
-
Não há tipos de instância de GPU (GPUs não são suportadas)
-
Máximo de 5 tipos de instâncias de fallback exclusivos
-
Todos os tipos de instância devem ter suporte consistente para armazenamento: ou todos suportam armazenamento HYPERDISK_BALANCED ou nenhum deles suporta. O número de SSD locais deve ser válido para todos os tipos de instância na lista fallback .
Use tipos de nós flexíveis com pool
Você também pode personalizar uma lista fallback para a piscina. Na APIdo pool, defina o campo node_type_flexibility para especificar os tipos de instância fallback . Por exemplo:
"node_type_flexibility": {
"alternate_node_type_ids": ["n2-highmem-8"]
}
O pool não suporta o uso de tipos de instância flexíveis para manter a contagem mínima de parados. O pool só pode iniciar VMs usando os tipos de instância fallback quando uma inicialização compute a partir do pool for tentada. O pré-aquecimento da contagem minIdle utiliza apenas o tipo de instância preferencial.
visualizar os tipos de instância adquiridos
Ao usar tipos de nós flexíveis, seu recurso compute pode consistir em uma combinação de diferentes tipos de instância. Todos os tipos de instâncias fallback são compatíveis com o seu tipo preferido, mantendo a mesma contagem de vCPUs, memória, disposição em disco, arquitetura de CPU e imagem do sistema operacional para garantir a execução correta da sua carga de trabalho.
Você pode view quais tipos de instância foram adquiridos para seu recurso compute :
- Na página de detalhes compute , clique nos três pontos ao lado do botão Terminar e selecione visualizar JSON .
- Analise o campo
node_type_idpara cada executor para ver quais tipos de instância estão em execução.
Você também pode usar a APIGet clusters info para recuperar essas informações programaticamente. Além disso, os usuários com permissão para acessar as tabelas do sistema podem consultar a tabela node_timelines . Consulte o esquema da tabela de linha do tempo do nó.
Desative os tipos de nós flexíveis em um recurso compute
A Databricks recomenda manter os tipos de nós flexíveis ativados, a menos que você tenha requisitos rigorosos para um tipo de instância específico.
Se preferir que a inicialização compute falhe em vez de fallback a um tipo de instância alternativo, você pode desativar o comportamento flexível do nó no nível do recurso computeindividual. Isso só é compatível ao usar a API de clusters. Para desativar os tipos de nós flexíveis, defina os campos de tipo de nó flexível como vazios na configuração compute . Por exemplo:
"worker_node_type_flexibility": {
"alternate_node_type_ids": []
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": []
}
Perguntas frequentes
Como as cargas de trabalho existentes são afetadas?
Os recursos compute de uso geral existentes permanecem inalterados. Para usar fallback automático, crie um novo recurso compute uso geral após ativar a configuração ou atualize a especificação API de recurso compute com uma lista fallback personalizada.
Para Job usando Job compute, cada execução cria um novo recurso compute , portanto, a execução subsequente do Job existente usa automaticamente fallback flexível .
Isso funciona com pool de instâncias?
Sim. Os tipos de nós flexíveis se aplicam às configurações do seu pool de instâncias. Alguns pontos a serem observados:
- Min parado permanece consistente : As instâncias mínimas de parado do pool (
minIdle) são mantidas usando seu tipo de nó primário. Qualquer nova máquina virtual (VM) iniciada por meio de uma solicitação de inicialização de cluster pode ser atendida usando tipos de nós de fallback compatíveis quando o tipo primário estiver limitado. - Edições de pool : Não é possível editar um pool de instâncias depois de ele ter sido criado. Se você deseja alterar alguma configuração de fallback personalizada, é necessário criar um novo pool de instâncias.
- Visibilidade da API : A resposta
/api/2.0/instance-pools/getnão mostra a flexibilidade do tipo de nó, a menos que você tenha configurado explicitamente uma lista de fallback personalizada no pool. Para ver a configuração fallback do seu pool de instâncias, você pode criar um cluster de exemplo e view a resposta/api/2.1/clusters/get.
Como funciona a cobrança?
A cobrança é feita com base nas taxas DBU padrão para os tipos de instância efetivamente adquiridos. Quaisquer descontos por instância que você tenha com seu provedor cloud são aplicados automaticamente aos tipos de instância correspondentes usados pelo recurso compute .
Como isso interage com as quotas de tipo de nó no meu workspace?
Se uma inicialização compute falhar porque o tipo de nó primário atingiu o limite de "cota excedida", os tipos de nó flexíveis ainda podem melhorar a confiabilidade da inicialização, recorrendo automaticamente a uma alternativa compatível. Dito isso, para falhas relacionadas a cotas, Databricks recomenda tratar fallback como uma rede de segurança, e não como a solução principal. Você pode solicitar um aumento de cota ao seu provedor cloud para que Databricks possa adquirir consistentemente os tipos de instância de sua preferência antes de recorrer a alternativas, ou usar compute serverless .
Posso habilitar tipos de nós flexíveis apenas para um subconjunto das minhas cargas de trabalho?
fallback para tipos de nós gerados automaticamente só pode ser configurada no nível workspace . No entanto, você tem duas opções para controlar o comportamento de fallback de uma carga de trabalho específica:
- (Recomendado) Habilite tipos de nó flexíveis para o workspace e, em seguida, desative um cluster específico definindo
alternate_node_type_idscomo uma lista vazia[]na especificação desse cluster. - Desative os tipos de nó flexíveis para todo o workspace e, em seguida, opte por uma especificação cluster específica, fornecendo uma lista fallback personalizada em
alternate_node_type_idsque atenda aos requisitos de compatibilidade.