Partilhar via


Dimensionar automaticamente os pools do Apache Spark do Azure Synapse Analytics

A funcionalidade de Dimensionamento Automático do conjunto do Apache Spark para o Azure Synapse Analytics aumenta e reduz verticalmente de forma automática o número de nós numa instância de cluster. Durante a criação de um novo pool do Apache Spark for Azure Synapse Analytics, um número mínimo e máximo de nós, até 200 nós, pode ser definido quando o Autoscale é selecionado. O Dimensionamento Automático monitoriza os requisitos de recursos da carga e aumenta e reduz verticalmente o número de nós. Não existe nenhum encargo adicional para esta funcionalidade.

Monitoramento de métricas

O dimensionamento automático monitora continuamente a instância do Spark e coleta as seguintes métricas:

Métrico Description
Total de CPU pendente O número total de núcleos necessários para iniciar a execução de todos os trabalhos pendentes.
Total de memória pendente A memória total (em MB) necessária para iniciar a execução de todos os trabalhos pendentes.
CPU livre total A soma de todos os núcleos não utilizados nos nós ativos.
Memória livre total A soma da memória não utilizada (em MB) nos nós ativos.
Memória usada por nó A carga em um nó. Um nó no qual 10 GB de memória é usado, é considerado sob mais carga do que um trabalhador com 2 GB de memória usada.

As métricas acima são verificadas a cada 30 segundos. O dimensionamento automático toma decisões de aumento e redução de escala com base nessas métricas.

Condições de escala baseadas em carga

Quando as seguintes condições forem detetadas, o Autoscale emitirá uma solicitação de escala:

Aumento vertical Redução de escala
O total de CPU pendente é maior do que o total de CPU livre por mais de 1 minuto. O total de CPU pendente é inferior ao total de CPU livre por mais de 2 minutos.
O total de memória pendente é maior do que o total de memória livre por mais de 1 minuto. A memória total pendente é inferior à memória livre total por mais de 2 minutos.

Para escalonamento, o serviço Azure Synapse Autoscale calcula quantos novos nós são necessários para atender aos requisitos atuais de CPU e memória e, em seguida, emite uma solicitação de expansão para adicionar o número necessário de nós.

Para redução de escala, com base no número de executores, mestres de aplicativos por nó, os requisitos atuais de CPU e memória, o Autoscale emite uma solicitação para remover um determinado número de nós. O serviço também deteta quais nós são candidatos para remoção com base na execução atual do trabalho. A operação de redução de escala primeiro descomissiona os nós e, em seguida, os remove do cluster.

Nota

Uma observação sobre como atualizar e forçar a aplicação da configuração de dimensionamento automático a um pool do Spark existente. Se Forçar nova configuração no portal do Azure ou ForceApplySetting no PowerShell estiver habilitado, todas as sessões do Spark existentes serão encerradas e as alterações de configuração serão aplicadas imediatamente. Se essa opção não for selecionada, a configuração será aplicada às novas sessões do Spark e as sessões existentes não serão encerradas.

Começar agora

Crie um pool do Apache Spark sem servidor com Autoscaling

Para habilitar o recurso Dimensionamento automático, conclua as seguintes etapas como parte do processo normal de criação do pool:

  1. Na guia Noções básicas, marque a caixa de seleção Habilitar dimensionamento automático.

  2. Insira os valores desejados para as seguintes propriedades:

    • Número mínimo de nós.
    • Número máximo de nós.

O número inicial de nós será o mínimo. Esse valor define o tamanho inicial da instância quando ela é criada. O número mínimo de nós não pode ser inferior a três.

Opcionalmente, você pode habilitar a alocação dinâmica de executores em cenários em que os requisitos do executor são muito diferentes entre os estágios de um Spark Job ou o volume de dados processados flutua com o tempo. Ao habilitar a Alocação Dinâmica de Executores, podemos utilizar a capacidade conforme necessário.

Ao habilitar a alocação dinâmica, ele permite que o trabalho dimensione o número de executores dentro do número mínimo e máximo de executores especificados.

Apache Spark permite a configuração de alocação dinâmica de executores através de código como abaixo:

    %%configure -f
    {
        "conf" : {
            "spark.dynamicAllocation.maxExecutors" : "6",
            "spark.dynamicAllocation.enabled": "true",
            "spark.dynamicAllocation.minExecutors": "2"
     }
    }

Os padrões especificados através do código substituem os valores definidos através da interface do usuário.

Neste exemplo, se o seu trabalho requer apenas 2 executores, ele usará apenas 2 executores. Quando o trabalho requer mais, ele será dimensionado para até 6 executores (1 driver, 6 executores). Quando o trabalho não precisa dos executores, então ele descomissionará os executores. Se ele não precisar do nó, ele liberará o nó.

Nota

O maxExecutors reservará o número de executores configurados. Considerando o exemplo, mesmo que você use apenas 2, ele reservará 6.

Assim, ao habilitar a alocação dinâmica, os executores aumentam ou diminuem a escala com base na utilização dos executores. Isso garante que os Executores sejam provisionados de acordo com as necessidades do trabalho que está sendo executado.

Melhores práticas

Considere a latência das operações de aumento ou redução de escala

Pode levar de 1 a 5 minutos para que uma operação de dimensionamento seja concluída.

Prepare-se para reduzir a escala

Durante o processo de redução da instância, o Autoscale colocará os nós em estado de descomissionamento para que nenhum novo executor possa ser iniciado nesse nó.

Os trabalhos em execução continuarão a ser executados e concluídos. Os trabalhos pendentes aguardarão para serem agendados normalmente, com menos nós disponíveis.

Nota

Por padrão, spark.yarn.executor.decommission.enabled é definido como true, permitindo o desligamento automático de nós subutilizados para otimizar a eficiência de computação. Se for preferível reduzir a escala menos agressiva, essa configuração pode ser definida como false.

Próximos passos

Guia de início rápido para configurar um novo pool do Spark Criar um pool do Spark