Escalonamento horizontal para aplicações Databricks

Importante

Este recurso está em versão Beta. Para solicitar acesso, contacte o seu representante do Azure Databricks. Depois de ativada a funcionalidade, os administradores do espaço de trabalho podem controlar o acesso a ela a partir da página de Pré-visualizações . Ver Gerir as pré-visualizações de Azure Databricks.

Esta página descreve como executar uma aplicação Databricks em múltiplas instâncias atrás de uma única URL de aplicação para maior disponibilidade e concorrência.

A escalabilidade horizontal distribui pedidos entre as instâncias, por isso uma única falha ou reinício de uma única instância não desliga a aplicação. O custo de computação escala linearmente com o número de instâncias.

Benefícios adicionais incluem:

  • Afinidade de sessão: Cada pedido do mesmo utilizador é encaminhado para a mesma instância com base no melhor esforço, pelo que uma aplicação pode manter dados de curta duração por utilizador (por exemplo, uma cache em memória) nessa instância. Também conhecidas como sessões pegajosas. Consulte afinidade da sessão.
  • Implementações sem indisponibilidade: o Azure Databricks implementa primeiro uma nova versão numa instância de compilação e só atualiza as restantes instâncias depois de a implementação nessa instância ser bem-sucedida. As instâncias existentes continuam a processar o tráfego durante todo esse período.
  • Stable build caches: Azure Databricks preserva artefactos de implementação através das atualizações de computação (por exemplo, quando alteras o tamanho ou contagem da instância), por isso a aplicação não precisa de uma reconstrução completa.

Requerimentos

Os seguintes requisitos aplicam-se a todas as aplicações com escala horizontal:

  • Durante o período Beta, a sua aplicação deve escutar em 0.0.0.0 (não em 127.0.0.1 ou localhost).

Crie uma aplicação com escala horizontal

Para criar uma aplicação com escalonamento horizontal ativado:

  1. No seu espaço de trabalho Azure Databricks, clique no ícone Aplicativo. no alternador de aplicativos e selecione Databricks Aplicativos.
  2. Clique em + Criar aplicação, depois clique em Criar uma aplicação personalizada.
  3. Introduza um nome e configure a aplicação conforme descrito em Criar uma aplicação Databricks personalizada.
  4. No passo Configurar, selecione Ativar o dimensionamento horizontal.
  5. Especifique o número de instâncias (1–5). O Azure Databricks recomenda pelo menos 2 instâncias para disponibilidade.
  6. Clique em Criar aplicativo.

Ativar o escalonamento horizontal para uma aplicação não afeta nenhuma outra aplicação no espaço de trabalho.

As aplicações recém-criadas em escala horizontal não incluem as bibliotecas Python pré-instaladas. Declare todas as dependências em requirements.txt ou pyproject.toml. Consulte Gerenciar dependências para um aplicativo Databricks.

Converter uma aplicação padrão para usar escalonamento horizontal

Converte uma aplicação padrão existente numa aplicação com escala horizontal a partir do separador Definições . A conversão não traz tempo de inatividade. A tua aplicação padrão existente continua a servir o tráfego até que a nova implementação em escala horizontal passe nas verificações de saúde, altura em que o Azure Databricks reduz o tráfego.

A conversão é reversível. Podes converter uma aplicação com escala horizontal de volta para uma app padrão a partir do mesmo separador de Definições .

Comportamento de conversão

O seguinte comportamento aplica-se no momento da conversão:

Testar a conversão

A conversão altera a imagem em tempo de execução e o modelo de escala da sua aplicação. Antes de converter uma aplicação de produção, valide a alteração num duplicado:

  1. Cria uma cópia da aplicação padrão que queres converter.
  2. Converta o duplicado seguindo os seguintes passos.
  3. Verifica se a aplicação funciona como esperado no duplicado convertido. Verifique os registos, o tráfego e qualquer comportamento relacionado com a afinidade de sessão.
  4. Converta a aplicação de produção após a validação.

Converter uma aplicação padrão

Para converter uma aplicação padrão para escala horizontal:

  1. No seu espaço de trabalho Azure Databricks, clique no ícone Aplicativo. no alternador de aplicativos e selecione Databricks Aplicativos.
  2. Clica no nome da aplicação que queres converter.
  3. Clique no separador Definições .
  4. Em Calcular, selecione Ativar escalonamento horizontal. Azure Databricks define o número de instâncias para 1, que é necessário no momento da conversão.
  5. Clique em Guardar.

O Azure Databricks lança novos computadores em escala horizontal e depois redistribui a sua aplicação nele. O tempo total depende da duração da compilação da tua aplicação. A aplicação existente continua a processar tráfego durante todo o processo.

Depois de terminar a conversão, pode escalar ou optar por não usar bibliotecas pré-instaladas.

Gerir a contagem de instâncias

Para alterar o número de instâncias de uma aplicação com escala horizontal:

  1. Na página de detalhes da aplicação, clique em Editar.
  2. No passo Configurar , atualize o número de instâncias.
  3. Clique em Guardar.

A aplicação continua a servir o tráfego enquanto o Azure Databricks aplica a alteração.

Afinidade de sessão

A afinidade de sessão encaminha todos os pedidos do mesmo utilizador para a mesma instância sempre que possível. Uma aplicação pode usar este encaminhamento para manter dados de curta duração por utilizador (por exemplo, uma cache em memória ou ficheiros temporários no sistema de ficheiros local) na instância que gere a sessão desse utilizador. A afinidade de sessão também é conhecida como sessões adesivas.

A afinidade para a sessão é o melhor esforço. Não armazene nada no estado local da instância que não consiga reconstruir ou obter a partir de um armazenamento durável. Armazene quaisquer dados que tenham de persistir para além de uma sessão num armazenamento duradouro, como tabelas do Unity Catalog.

Também pode persistir dados com Lakebase.

Aplicações baseadas em navegador

A afinidade de sessão funciona automaticamente para aplicações executadas no navegador. O primeiro pedido de um navegador é encaminhado para uma instância selecionada aleatoriamente, que define o __Host-databricks-app-router cookie. As solicitações subsequentes que incluem esse cookie são encaminhadas para a mesma instância.

Clientes API

Para obter afinidade de sessão para clientes API, inclua o __Host-databricks-app-router cookie em cada pedido e defina-o para um UUID gerado aleatoriamente. Todos os pedidos com o mesmo valor do cookie são encaminhados para a mesma instância.

curl -X GET https://<your-app>.aws.databricksapps.com/api/endpoint \
  -H "Authorization: Bearer YOUR_BEARER_TOKEN" \
  -b "__Host-databricks-app-router=f8822466-3b1e-423a-988b-54c9e639c250"

Reatribuição de sessões

As sessões podem passar para uma instância diferente nos seguintes casos:

  • Uma instância torna-se indisponível (por exemplo, durante a implementação ou um crash).
  • Mudas a contagem de instâncias.
  • O Azure Databricks reequilibra sessões entre instâncias.
  • Um pedido individual é encaminhado incorretamente (raro).

Limitações

As seguintes limitações aplicam-se a aplicações com escala horizontal:

  • Cada espaço de trabalho pode ter, no máximo, 5 aplicações com escala horizontal. Contacte o seu representante do Azure Databricks para aumentar este limite.
  • Cada aplicação com escala horizontal pode ter no máximo 5 instâncias. Contacte o seu representante do Azure Databricks para aumentar este limite.
  • O separador Registos mostra registos de uma única instância de cada vez. Para ver registos em todas as instâncias, ativa a telemetria da aplicação.