Compartilhar via


Dimensionar automaticamente os pools do Apache Spark do Azure Synapse Analytics

O recurso de Dimensionamento Automático do pool do Apache Spark para Azure Synapse Analytics dimensiona automaticamente o número de nós em uma instância de cluster para cima e para baixo. Durante a criação de um novo pool do Apache Spark para Azure Synapse Analytics, um número mínimo e máximo de nós, até 200 nós, pode ser definido quando o Dimensionamento Automático é selecionado. O dimensionamento automático monitora os requisitos do recurso da carga e escala ou reduz verticalmente o número de nós. Não há nenhuma cobrança adicional por esse recurso.

Monitoramento de métricas

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

Métrica 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.
Total de CPU livre A soma de todos os núcleos não utilizados em nós ativos.
Total de memória livre A soma de memória não usada (em MB) em nós ativos.
Memória usada por nó A carga em um nó. Um nó no qual 10 GB de memória são usados é considerado estando sob uma carga maior que um nó de trabalho com 2 GB de memória usada.

As métricas acima são verificadas a cada 30 segundos. O autoscale toma decisões de escalonamento para cima e para baixo com base nessas métricas.

Condições de escala baseadas em carga

Quando as seguintes condições forem detectadas, o Dimensionamento Automático emitirá uma solicitação de escala:

Escalar verticalmente Reduzir verticalmente
O total de CPU pendente é maior que o total de CPU livre por mais de 1 minuto. O total de CPU pendente é menor que o total de CPU livre por mais de 2 minutos.
O total de memória pendente é maior que o total de memória livre por mais de 1 minuto. O total de memória pendente é menor que o total de memória livre por mais de 2 minutos.

Para escalar verticalmente, o serviço de Dimensionamento Automático do Azure Synapse 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 reduzir a escala, com base no número de executores, gerentes de aplicação por nó, nos requisitos atuais de CPU e memória, o Dimensionamento Automático emite uma solicitação para a remoção de alguns nós. O serviço também detecta quais nós são candidatos à remoção com base na execução do trabalho atual. A operação de redução encerra primeiro os nós e, em seguida, remove-os do cluster.

Observação

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 a nova configuração do Force no portal do Azure ou ForceApplySetting no PowerShell estiver habilitada, todas as sessões existentes do Spark serão encerradas e as alterações de configuração serão aplicadas imediatamente. Se essa opção não estiver selecionada, a configuração será aplicada às novas sessões do Spark e as sessões existentes não serão encerradas.

Introdução

Criar um pool do Apache Spark sem servidor com dimensionamento automático

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

  1. Na guia Noções básicas , selecione 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 menor que 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 Trabalho do Spark 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.

O Apache Spark habilita a configuração de Alocação Dinâmica de Executores por meio do código, conforme abaixo:

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

Os padrões especificados por meio do código substituem os valores definidos por meio da interface do usuário.

Neste exemplo, se o trabalho exigir apenas dois executores, ele usará apenas dois executores. Quando o trabalho exigir mais, ele escalará para seis executores (um driver, seis executores). Quando o trabalho não precisar dos executores, ele os desativará. Se ele não precisar do nó, o nó será liberado.

Observação

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

Portanto, ao habilitar a alocação dinâmica, os executores são escalados horizontal ou verticalmente com base na utilização. Isso garante que os Executores sejam provisionados de acordo com as necessidades do trabalho que está sendo executado.

Práticas recomendadas

Considere a latência das operações de escalar para cima ou para baixo

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

Preparar-se para reduzir a escala

Durante o processo de redução da instância, o Dimensionamento automático colocará os nós no estado de encerramento para que nenhum executor novo possa ser iniciado nesse nó.

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

Observação

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 da computação. Se uma redução menos agressiva for preferencial, essa configuração poderá ser definida como false.

Próximas etapas

Início Rápido para configurar um novo pool do Spark Criar um pool do Spark