Compartilhar via


Dimensionar automaticamente pools do Apache Spark do Azure Synapse Analytics

O recurso Dimensionamento automático do pool do Apache Spark para Azure Synapse Analytics escala ou reduz verticalmente de maneira automática o número de nós em uma instância de cluster. 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 for 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á nenhum custo adicional para esse recurso.

Monitoramento de métricas

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

Métrica Descrição
Total de CPU pendente O número total de núcleos necessário para iniciar a execução de todos os trabalhos pendentes.
Total de memória pendente O total de memória (em MB) necessário 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 dimensionamento automático escala ou reduz verticalmente as decisões 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 dimensionamento:

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 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 emite uma solicitação de escala vertical para adicionar o número necessário de nós.

Para reduzir verticalmente, com base no número de executores, os mestres de aplicativo por nó e os requisitos atuais de CPU e memória, o Dimensionamento automático emite uma solicitação para remover um determinado número de nós. O serviço também detecta quais nós são candidatos para 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 as opções Forçar nova configuração no portal do Azure ou ForceApplySetting no PowerShell estiverem habilitadas, todas as sessões existentes do Spark serão encerradas e as alterações de configuração serão aplicadas imediatamente. Se essas opções não estiverem selecionadas, 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, 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 menor que três.

Uma opção é 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, o trabalho pode dimensionar o número de executores dentro do número mínimo e máximo de executores especificados.

Apache Spark habilita a configuração da 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 através 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á verticalmente até 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 dois, ele reservará seis.

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

Práticas recomendadas

Considerar a latência de operações de aumento ou redução

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

Preparar para reduzir

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 aguardarã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 preferir uma redução vertical menos agressiva, essa configuração pode ser definida como falsa.

Próximas etapas

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