Compartilhar via


Dimensionar automaticamente clusters do HDInsight no AKS

O dimensionamento de qualquer cluster para atender aos requisitos de desempenho do trabalho e gerenciar custos antecipadamente é sempre complicado e difícil de determinar. Um dos benefícios lucrativos da construção da um repositório data lake na nuvem é sua elasticidade, o que significa usar o recurso de dimensionamento automático para maximizar a utilização dos recursos disponíveis. O dimensionamento automático com o Kubernetes é uma chave para estabelecer um ecossistema otimizado para custo. Com padrões de uso variados em qualquer empresa, pode haver variações nas cargas de cluster ao longo do tempo que podem levar os clusters a serem subprovisionados (desempenho ruim) ou superprovisionados (custos desnecessários devido a recursos ociosos).

O recurso de dimensionamento automático oferecido no HDInsight no AKS pode aumentar ou diminuir automaticamente o número de nós de trabalho no cluster. O dimensionamento automático usa as métricas de cluster e a política de dimensionamento usada pelos clientes.

Esse recurso é adequado para cargas de trabalho críticas, que podem ter

  • Padrões de tráfego variáveis ou imprevisíveis e exigir SLAs em alto desempenho e escala ou
  • Agendamento predeterminado para que os nós de trabalho necessários estejam disponíveis para executar os trabalhos com êxito no cluster.

O dimensionamento automático com clusters do HDInsight no AKS torna os clusters econômicos e elásticos no Azure.

Com o dimensionamento automático, os clientes podem reduzir verticalmente os clusters sem afetar as cargas de trabalho. Ele é habilitado com funcionalidades avançadas, como a desativação normal e o período de resfriamento. Essas funcionalidades permitem que os usuários façam escolhas informadas sobre adição e remoção de nós com base na carga atual do cluster.

Como ele funciona

Esse recurso funciona dimensionando o número de nós dentro dos limites predefinidos com base em métricas de cluster ou em um agendamento definido de operações de expansão e redução. Há dois tipos de condições para disparar eventos de dimensionamento automático: gatilhos baseados em limite para várias métricas de desempenho de cluster (chamados de dimensionamento baseado em carga) e gatilhos baseados em tempo (chamados de dimensionamento baseado em agendamento).

O dimensionamento baseado em carga altera o número de nós no cluster, dentro de um intervalo definido, para garantir o uso ideal da CPU e minimizar o custo de execução.

O dimensionamento baseado em agendamento altera o número de nós no cluster com base em uma agenda de operações de escala vertical e redução.

Observação

O dimensionamento automático não dá suporte à alteração do tipo de SKU de um cluster existente.

Cluster do Adaptador

A tabela a seguir descreve os tipos de cluster e as versões que são compatíveis com o recurso de Dimensionamento automático e o que está disponível ou planejado.

Carga de trabalho Baseado em carga Baseado em agendamento
Flink Planejado Sim
Trino Sim** Sim**
Spark Sim** Sim**

**A desativação normal é configurável.

Métodos de escala

  • Escala baseada em agendamento:

    • Quando os trabalhos precisarem ser executados em agendas fixas e por um período previsível ou quando o baixo uso for esperado durante horários específicos. Por exemplo, ambientes de desenvolvimento e teste após o horário de expediente, trabalhos de fim do dia.

      Captura de tela mostrando como selecionar o dimensionamento baseado em agendamento.

  • Escala baseada em carga:

    • Quando os padrões de carga flutuam de maneira substancial e imprevisível durante o dia, por exemplo, no processamento de dados de pedidos com flutuações aleatórias nos padrões de carga com base em vários fatores.

      Captura de tela mostrando como selecionar o dimensionamento baseado em carga.

      Com a nova opção de configuração de regra de escala, agora você pode personalizar as regras de escala.

      Captura de tela mostrando como configurar a regra de escala no dimensionamento baseado em carga.

      Captura de tela mostrando como adicionar regras na configuração de regras de escala para dimensionamento baseado em carga.

      Dica

      • As regras de escalonamento vertical têm precedência quando uma ou mais regras são disparadas. Mesmo que apenas uma das regras para escalar verticalmente sugira que o cluster esteja subprovisionado, o cluster tentará escalar verticalmente. Para que a redução vertical ocorra, nenhuma regra de escalonamento vertical deve ser disparada.

Condições de escala baseadas em carga

Quando as seguintes condições são detectadas, o dimensionamento automático emite uma solicitação de dimensionamento:

Escalar verticalmente Reduzir verticalmente
Os núcleos alocados são mais de 80% para o intervalo de sondagem de cinco minutos (período de sondagem de um minuto) Os núcleos alocados são 20% ou menos para o intervalo de sondagem de cinco minutos (período de sondagem de um minuto)
  • Para escalonamento vertical, o dimensionamento automático emite uma solicitação de escalonamento vertical para adicionar o número necessário de nós. A expansão se baseia em quantos novos nós de trabalho são necessários para atender aos requisitos atuais de CPU e memória. Esse valor é limitado ao número máximo de nós de trabalho definidos.

  • Para reduzir verticalmente, o dimensionamento automático emite uma solicitação para remover alguns nós. As considerações de redução horizontal incluem o número de pods por nó, os requisitos atuais de CPU e memória e os nós de trabalho, que são candidatos a 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.

    Importante

    O mecanismo de regra de dimensionamento automático libera proativamente eventos antigos a cada 30 minutos para otimizar a memória do sistema. Como resultado, existe um limite de limite superior de 30 minutos no intervalo de regra de dimensionamento. Para garantir o gatilho consistente e confiável de ações de dimensionamento, é imperativo definir o intervalo de regra de dimensionamento para um valor menor que o limite. Ao aderir a essa diretriz, você pode garantir um processo de dimensionamento suave e eficiente, gerenciando efetivamente os recursos do sistema.

Métricas de cluster

O dimensionamento automático monitora o cluster continuamente e coleta as seguintes métricas para dimensionamento automático baseado em carga:

Métricas de cluster disponíveis para fins de dimensionamento

Métrica Descrição
Porcentagem de núcleos disponíveis O número total de núcleos disponíveis no cluster em comparação com o número total de núcleos no cluster.
Porcentagem de memória disponível A memória total (em MB) disponível no cluster em comparação com a quantidade total de memória no cluster.
Porcentagem de núcleos alocados O número total de núcleos alocados no cluster em comparação com o número total de núcleos no cluster.
Porcentagem de memória alocada A quantidade de memória alocada no cluster em comparação com a quantidade total de memória no cluster.

Por padrão, as métricas acima são verificadas a cada 300 segundos. Isso também é configurável quando você personaliza o intervalo de sondagem com a opção de personalizar o dimensionamento automático. O dimensionamento automático escala ou reduz verticalmente as decisões com base nessas métricas.

Observação

Por padrão, o dimensionamento automático usa a calculadora de recursos padrão para YARN para Apache Spark. O dimensionamento baseado em carga está disponível para clusters do Apache Spark.

Desativação normal

As empresas precisam de maneiras de alcançar a escala petabyte com dimensionamento automático e desativar recursos normalmente quando não forem mais necessários. Nesse cenário, a funcionalidade de desativação normal é útil.

A desativação normal permite que os trabalhos seja concluídos mesmo após o dimensionamento automático ter disparado a desativação dos nós de trabalho. Esse recurso permite que os nós continuem a ser provisionados até que os trabalhos sejam concluídos.

  • Trino: os trabalhadores têm a desativação normal habilitada por padrão. O coordenador permite que o trabalho de encerramento conclua as próprias tarefas por tempo configurado antes de remover o trabalho do cluster. Você pode configurar o tempo limite usando o parâmetro Trino nativo shutdown.grace-period ou na página de configuração do serviço do portal do Azure.

  • Apache Spark: reduzir verticalmente pode afetar/parar todos os trabalhos em execução no cluster. Se você habilitar as configurações de desativação normal no portal do Azure, isso incorporará a desativação normal de nós do YARN e garantirá que qualquer trabalho em andamento em um nó de trabalho seja concluído antes que o nó seja removido do cluster do HDInsight no AKS.

Período de resfriamento

Para evitar operações contínuas de expansão, o mecanismo de dimensionamento automático aguarda um intervalo configurável antes de iniciar outro conjunto de operações de escalonamento vertical. O valor padrão é definido como 180 segundos.

Observação

  • Em regras de escala personalizadas, nenhum gatilho de regra pode ter um intervalo de gatilho maior que 30 minutos. Depois que ocorre um evento de dimensionamento automático, a quantidade de tempo a aguardar antes de impor outra política de dimensionamento.
  • O período de resfriamento deve ser maior que o intervalo de política, de modo que as métricas do cluster possam ser redefinidas.

Introdução

  1. Para que o dimensionamento automático funcione, é necessário atribuir a permissão de proprietário ou colaborador ao MSI (usado durante a criação do cluster) no nível do cluster, usando o IAM no painel esquerdo.

  2. Consulte a ilustração a seguir e as etapas listadas sobre como adicionar uma atribuição de função

    Captura de tela mostra como adicionar uma atribuição de função.

  3. Escolha Adicionar atribuição de função,

    1. Tipo de atribuição: funções de administrador com privilégios
    2. Função: Proprietário ou Colaborador
    3. Membros: escolha a identidade gerenciada e selecione a Identidade gerenciada atribuída pelo usuário, que foi fornecida durante a fase de criação do cluster.
    4. Atribua a função.

Criar um cluster com dimensionamento automático baseado em agendamento

  1. Depois que o pool de clusters for criado, crie um cluster com a carga de trabalho desejada (no Tipo de cluster) e conclua as outras etapas como parte do processo normal de criação de clusters.

  2. Na guia Configuração, habilite o controle de alternância Dimensionamento automático.

  3. Selecione o dimensionamento automático Baseado em agendamento

  4. Selecione seu fuso horário e clique em + Adicionar regra

  5. Selecione os dias da semana aos quais a nova condição deve ser aplicada.

  6. Edite a hora em que a condição deve entrar em vigor e o número de nós para o qual o cluster deve ser dimensionado.

    Captura de tela mostrando como começar a usar o dimensionamento automático baseado em agendamento.

    Observação

    • O usuário deve ter a função de “proprietário” ou “colaborador” no MSI do cluster para que o dimensionamento automático funcione.
    • O valor padrão define o tamanho inicial do cluster quando ele é criado.
    • A diferença entre dois agendamentos é definida por padrão como 30 minutos.
    • O valor de hora segue o formato de 24 horas
    • No caso de uma janela contínua de mais de 24 horas entre vários dias, você é obrigado a definir o agendamento de dimensionamento automático entre dias, e o dimensionamento automático pressupõe 23:59 como 00:00 (com a mesma contagem de nós) abrangendo dois dias das 22:00 às 23:59, das 00:00 às 02:00 como 22:00 às 02:00.
    • Os agendamentos são definidos em UTC (Tempo Universal Coordenado), por padrão. Você sempre pode atualizar para o fuso horário que corresponde ao fuso horário local na lista suspensa disponível. Quando você está em um fuso horário com horário de verão, o agendamento não é ajustado automaticamente, você é obrigado a gerenciar as atualizações de agendamento adequadamente.

Criar um cluster com dimensionamento automático baseado em carga

  1. Depois que o pool de clusters for criado, crie um cluster com a carga de trabalho desejada (no Tipo de cluster) e conclua as outras etapas como parte do processo normal de criação de clusters.

  2. Na guia Configuração, habilite o controle de alternância Dimensionamento automático.

  3. Selecione o dimensionamento automático Baseado em carga

  4. Com base no tipo de carga de trabalho, você tem opções para adicionar tempo limite para desativação normal e período de resfriamento

  5. Selecione o mínimo e máximo de nós e, se necessário, configure as regras de dimensionamento para personalizar o dimensionamento automático de acordo com suas necessidades.

    Captura de tela mostrando como começar a usar o dimensionamento automático baseado em carga.

    Dica

    • Sua assinatura tem uma cota de capacidade para cada região. O número total de núcleos de seus nós principais e o máximo de nós de trabalho não pode exceder a cota de capacidade. No entanto, essa cota é um limite flexível; você sempre pode criar um tíquete de suporte para aumentá-lo facilmente.
    • Se você exceder o limite total de cota de núcleos, receberá uma mensagem de erro informando The maximum node count you can select is {maxCount} due to the remaining quota in the selected subscription ({remaining} cores).
    • As regras de escalonamento vertical têm precedência quando uma ou mais regras são disparadas. Mesmo que apenas uma das regras para escalar verticalmente sugira que o cluster esteja subprovisionado, o cluster tentará escalar verticalmente. Para que a redução vertical ocorra, nenhuma regra de escalonamento vertical deve ser disparada.
    • Na versão prévia pública, o HDInsight no AKS dá suporte a até 500 nós em um cluster.

Criar um cluster com um modelo do Resource Manager

Dimensionamento automático com base em agendamento

É possível criar um cluster do HDInsight no AKS com dimensionamento automático baseado em agendamento usando um modelo do Azure Resource Manager, adicionando um dimensionamento automático à seção clusterProfile – > autoscaleProfile.

O nó de dimensionamento automático contém uma recorrência que tem um fuso horário e um agendamento que descreve quando a alteração ocorre. Para obter um modelo completo do Resource Manager, consulte o JSON de exemplo

{
  "autoscaleProfile": {
    "enabled": true,
    "autoscaleType": "ScheduleBased",
    "gracefulDecommissionTimeout": 60,
    "scheduleBasedConfig": {
      "schedules": [
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday"
          ],
          "startTime": "09:00",
          "endTime": "10:00",
          "count": 2
        },
        {
          "days": [
            "Sunday",
            "Saturday"
          ],
          "startTime": "12:00",
          "endTime": "22:00",
          "count": 5
        },
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "startTime": "22:00",
          "endTime": "23:59",
          "count": 6
        },
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "startTime": "00:00",
          "endTime": "05:00",
          "count": 6
        }
      ],
      "timeZone": "UTC",
      "defaultCount": 110
    }
  }
}

Dica

  • Para evitar falhas em operações de dimensionamento, você precisa definir agendamentos não conflitantes usando implantações do ARM.

Dimensionamento automático com base em carga

É possível criar um cluster do HDInsight no AKS com dimensionamento automático baseado em carga usando um modelo do Azure Resource Manager, adicionando um dimensionamento automático à seção clusterProfile – > autoscaleProfile.

O nó de dimensionamento automático contém

  • um intervalo de sondagem, período de resfriamento,
  • desativação normal,
  • mínimo e máximo de nós,
  • regras de limite padrão,
  • métricas de dimensionamento que descrevem quando a alteração ocorre.

Para obter um modelo completo do Resource Manager, consulte o JSON de exemplo conforme mostrado a seguir

  {
  "autoscaleProfile": {
    "enabled": true,
    "autoscaleType": "LoadBased",
    "gracefulDecommissionTimeout": 60,
    "loadBasedConfig": {
      "minNodes": 2,
      "maxNodes": 157,
      "pollInterval": 300,
      "cooldownPeriod": 180,
      "scalingRules": [
        {
          "actionType": "scaleup",
          "comparisonRule": {
            "threshold": 80,
            "operator": " greaterThanOrEqual"
          },
          "evaluationCount": 1,
          "scalingMetric": "allocatedCoresPercentage"
        },
        {
          "actionType": "scaledown",
          "comparisonRule": {
            "threshold": 20,
            "operator": " lessThanOrEqual"
          },
          "evaluationCount": 1,
          "scalingMetric": "allocatedCoresPercentage"
        }
      ]
    }
  }
}

Usando a API REST

Para habilitar ou desabilitar o dimensionamento automático em um cluster em execução usando a API REST, faça uma solicitação PATCH para o ponto de extremidade de dimensionamento automático: https://management.azure.com/subscriptions/{{USER_SUB}}/resourceGroups/{{USER_RG}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSTER_POOL_NAME}}/clusters/{{CLUSTER_NAME}}?api-version={{HILO_API_VERSION}}

  • Use os parâmetros apropriados na carga de solicitação. O conteúdo JSON pode ser usado para habilitar o dimensionamento automático.
  • Use o conteúdo (autoscaleProfile: null) ou use sinalizador (enabled, false) para desabilitar o dimensionamento automático.
  • Consulte os exemplos JSON mencionados na etapa acima para referência.

Pausar o dimensionamento automático para um cluster em execução

Introduzimos o recurso de pausa no dimensionamento automático. Agora, usando o portal do Azure, você pode pausar o dimensionamento automático em um cluster em execução. O diagrama abaixo ilustra como selecionar pausa e retomada do dimensionamento automático

Captura de tela mostrando como pausar o dimensionamento automático.

Você pode retomar as operações de dimensionamento automático quando desejar.

Captura de tela mostrando como retomar o dimensionamento automático.

Dica

Quando você configura vários agendamentos e está pausando o dimensionamento automático, ele não dispara o próximo agendamento. A contagem de nós permanece a mesma, mesmo que os nós estejam em um estado desativado.

Copiar configurações de dimensionamento automático

Usando o portal do Azure, agora você pode copiar as mesmas configurações de dimensionamento automático para uma mesma forma de cluster em seu pool de clusters. Você pode usar esse recurso e exportar ou importar as mesmas configurações.

Captura de tela mostrando como exportar ou importar as configurações do dimensionamento automático.

Monitorando atividades de dimensionamento automático

Status do cluster

O status do cluster listado no portal do Azure pode ajudar você a monitorar as atividades de dimensionamento automático. Todas as mensagens de status do cluster que você pode ver são explicadas na lista.

Status do cluster Descrição
Com sucesso O cluster está funcionando normalmente. Todas as atividades de dimensionamento automático anteriores foram concluídas com êxito.
Aceito A operação de cluster (por exemplo: escalar verticalmente) é aceita, aguardando a conclusão da operação.
Com falha Isso significa que uma operação atual falhou devido a algum motivo. Talvez o cluster não esteja funcional.
Canceled A operação atual é cancelada.

Captura de tela mostrando o status do cluster.

Para exibir o número atual de nós no cluster, acesse o gráfico de Tamanho do cluster na página Visão geral do cluster.

Captura de tela mostrando o tamanho do cluster.

Histórico de operação

É possível exibir o histórico de aumento ou redução de clusters como parte das métricas do cluster. Você também pode listar todas as ações de dimensionamento do último dia, semana ou outro período.

Captura de tela mostrando o histórico de operações do cluster nos logs de atividades.

Recursos adicionais

Dimensionamento manual – Azure HDInsight no AKS