Dimensionar automaticamente os clusters do Azure HDInsight

O recurso de Dimensionamento automático gratuito do Azure HDInsight pode aumentar ou diminuir automaticamente o número de nós de trabalho no cluster com base nas métricas de cluster e na política de escala adotada pelos clientes. O recurso de Dimensionamento automático funciona dimensionando o número de nós dentro dos limites predefinidos com base em métricas de desempenho ou em uma agenda definida de operações de expansão e redução

Como ele funciona

O recurso de Dimensionamento automático usa dois tipos de condições para disparar eventos de dimensionamento: limites para várias métricas de desempenho de cluster (chamadas de dimensionamento baseado em carga) e gatilhos baseados em tempo (chamados de dimensionamento baseado em agenda). 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.

O vídeo a seguir fornece uma visão geral dos desafios que o Dimensionamento automático resolve e como ele pode ajudar você a controlar os custos com o HDInsight.

Escolhendo o dimensionamento baseado em carga ou em agendamento

A escala baseada em agendamento pode ser usada:

  • 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.

A colocação em escala baseada em carga pode ser usada:

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

Métricas de cluster

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

Métrica Descrição
Total de CPU pendente o número total de núcleos necessários para iniciar a execução de todos os contêineres pendentes.
Total de memória pendente o total de memória (em MB) necessária para iniciar a execução de todos os contêineres pendentes.
Total de CPU livre a soma de todos os núcleos não utilizados em nós de trabalho ativos.
Total de memória livre A soma de memória não usada (em MB) em nós de trabalho ativos.
Memória usada por nó A carga em um nó de trabalho. Um nó de trabalho no qual 10 GB de memória são usados é considerado como estando sob uma carga maior que um nó de trabalho com 2 GB de memória usada.
Número de aplicativos mestres por nó O número de contêineres de aplicativo mestre (AM) em execução em um nó de trabalho. Um nó de trabalho que está hospedando dois contêineres AM é considerado mais importante do que um nó de trabalho que está hospedando zero contêineres AM.

As métricas acima são verificadas a cada 60 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 são detectadas, o dimensionamento automático emite uma solicitação de escala:

Escalar verticalmente Reduzir verticalmente
O total de CPU pendente é maior que o total de CPU livre por mais de 3 a 5 minutos. O total de CPU pendente é menor do que o total de CPU livre por mais de 3 a 5 minutos.
O total de memória pendente é maior que o total de memória livre por mais de 3 a 5 minutos. A memória total pendente é menor do que a memória total livre por mais de 3 a 5 minutos.

Para expansão, o dimensionamento automático emite uma solicitação de expansão 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.

Para reduzir verticalmente, o Dimensionamento automático emite uma solicitação para remover alguns nós. A redução vertical é baseada no número de contêineres AM (mestre do aplicativo) por nó. E os requisitos atuais de CPU e memória. 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.

Considerações de dimensionamento do banco de dados do Ambari para dimensionamento automático

Recomenda-se que o banco de dados do Ambari seja dimensionado corretamente para colher os benefícios do dimensionamento automático. Os clientes devem usar a camada de banco de dados correta e usar o banco de dados do Ambari personalizado para clusters de grande porte. Leia as recomendações de dimensionamento do Banco de dados e do Headnode .

Cluster do Adaptador

Importante

O recurso de dimensionamento automático do Azure HDInsight foi lançado para disponibilidade geral em 7 de novembro de 2019, para clusters Spark e Hadoop, e incluía aprimoramentos não estão disponíveis na versão prévia do recurso. Se você criou um cluster Spark antes de 7 de novembro de 2019 e deseja usar o recurso de dimensionamento automático em seu cluster, o caminho recomendado é criar um novo cluster e habilitar o dimensionamento automático no novo cluster.

O Dimensionamento automático para consulta interativa (LLAP) foi liberado para disponibilidade geral para HDI 4.0 em agosto de 27, 2020. O dimensionamento automático só está disponível em clusters Spark, Hadoop e Interactive Query

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.

Versão Spark Hive Consulta Interativa HBase Kafka
HDInsight 4.0 sem ESP Sim Sim Sim* No Não
HDInsight 4.0 com ESP Sim Sim Sim* No No
HDInsight 5.0 sem ESP Sim Sim Sim* No No
HDInsight 5.0 com ESP Sim Sim Sim* No Não

* Os clusters Interactive Query só podem ser configurados para escala baseada em agendamento, não baseada em carga.

Introdução

Criar um cluster com dimensionamento automático baseado em carga

Para habilitar o recurso Dimensionamento automático colocação em escala baseada em carga, execute as seguintes etapas como parte do processo normal de criação de cluster:

  1. Na guia Configuração + preço, marque a caixa de seleção Habilitar dimensionamento automático.

  2. Selecione Baseado em carga em Tipo de dimensionamento automático.

  3. Insira os valores pretendidos para as seguintes propriedades:

    • Número inicial de nós para o nó de trabalho.
    • Mínimo número de nós de trabalho.
    • Máximo número de nós de trabalho.

    Enable worker node load-based autoscale.

O número inicial de nós de trabalho deve estar entre o mínimo e máximo, inclusive. Esse valor define o tamanho inicial do cluster quando ele é criado. O número mínimo de nós de trabalho deve ser definido como três ou mais. Dimensionar o cluster para menos de três nós pode fazer com que ele fique preso no modo de segurança devido à replicação de arquivo insuficiente. Para obter mais informações, consulte Ficando preso no modo de segurança.

Criar um cluster com Dimensionamento automático baseado em agendamento

Para habilitar o recurso Dimensionamento automático, com uma colocação em escala baseado em programação, execute as seguintes etapas como parte do processo normal de criação de cluster:

  1. Na guia configuração + preços, marque a caixa de seleção Habilitar dimensionamento automático.

  2. Insira o Número de nós para o Nó de trabalho, que controla o limite para escalar verticalmente o cluster.

  3. Selecione a opção Baseado em agendamento em Tipo de dimensionamento automático.

  4. Selecione Configurar para abrir a janela Configuração de dimensionamento automático.

  5. Selecione seu fuso horário e clique em + Adicionar condição

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

  7. 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.

  8. Adicione mais condições, se necessário.

    Enable worker node schedule-based creation.

O número de nós deve estar entre 3 e o número máximo de nós de trabalho que você inseriu antes de adicionar condições.

Etapas de criação final

Selecione o tipo de VM para nós de trabalho selecionando uma VM na lista suspensa em Tamanho do nó. Após escolher o tipo de VM para cada tipo de nó, é possível ver o intervalo de custo estimado para o cluster inteiro. Ajuste os tipos de VM para se ajustarem ao seu orçamento.

Enable worker node schedule-based autoscale node size.

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.

Observação

Se você exceder o limite de cota de núcleos total, você receberá uma mensagem de erro dizendo ' o nó máximo excedeu os núcleos disponíveis nessa região, escolha outra região ou entre em contato com o suporte para aumentar a cota.'

Para obter mais informações sobre a criação de clusters HDInsight usando o portal do Azure, confira Criar clusters baseados em Linux no HDInsight usando o portal do Azure.

Criar um cluster com um modelo do Resource Manager

Dimensionamento automático baseado em carga

Você pode criar um cluster do HDInsight com Dimensionamento Automático baseado em carga em um modelo do Azure Resource Manager, adicionando um nó autoscale à seção computeProfile>workernode com as propriedades minInstanceCount e maxInstanceCount, conforme mostrado no trecho json. Para obter um completo modelo do Resource Manager, consulte Modelo de Início Rápido: Implantar o Cluster do Spark com dimensionamento automático baseado em carga habilitado.

{
  "name": "workernode",
  "targetInstanceCount": 4,
  "autoscale": {
      "capacity": {
          "minInstanceCount": 3,
          "maxInstanceCount": 10
      }
  },
  "hardwareProfile": {
      "vmSize": "Standard_D13_V2"
  },
  "osProfile": {
      "linuxOperatingSystemProfile": {
          "username": "[parameters('sshUserName')]",
          "password": "[parameters('sshPassword')]"
      }
  },
  "virtualNetworkProfile": null,
  "scriptActions": []
}

Dimensionamento automático baseado em agendamento

É possível criar um cluster HDInsight com dimensionamento automático baseado em agendamento um modelo de Azure Resource Manager, adicionando um autoscale nó à computeProfile>workernode seção. O nó autoscale contém um recurrence que tem timezone e schedule que descreve quando a alteração ocorre. Para obter um modelo completo do Resource Manager, consulte Implantar cluster Spark com dimensionamento automático baseado em agendamento habilitado.

{
  "autoscale": {
    "recurrence": {
      "timeZone": "Pacific Standard Time",
      "schedule": [
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "timeAndCapacity": {
            "time": "11:00",
            "minInstanceCount": 10,
            "maxInstanceCount": 10
          }
        }
      ]
    }
  },
  "name": "workernode",
  "targetInstanceCount": 4
}

Habilitar e desabilitar o dimensionamento automático para um cluster em execução

Usando o portal do Azure

Para habilitar o Dimensionamento automático em um cluster em execução, selecione Tamanho do cluster em Configurações. Em seguida, clique em Habilitar dimensionamento automático. Selecione o tipo de dimensionamento automático desejado e insira as opções para o dimensionamento baseado em carga ou em agendamento. Por fim, selecione Salvar.

Enable worker node schedule-based autoscale running cluster.

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 POST para o ponto de extremidade de dimensionamento automático:

https://management.azure.com/subscriptions/{subscription Id}/resourceGroups/{resourceGroup Name}/providers/Microsoft.HDInsight/clusters/{CLUSTERNAME}/roles/workernode/autoscale?api-version=2018-06-01-preview

Use os parâmetros apropriados na carga de solicitação. A seguinte carga json pode ser utilizada para habilitar o Dimensionamento automático. Use a carga {autoscale: null} para desabilitar o Dimensionamento automático.

{ "autoscale": { "capacity": { "minInstanceCount": 3, "maxInstanceCount": 5 } } }

Consulte a seção anterior sobre como Habilitar o dimensionamento automático baseado em carga para obter uma descrição completa de todos os parâmetros de carga. Não é recomendável desabilitar o serviço de dimensionamento automático de modo forçado em um cluster em execução.

Monitorando atividades de dimensionamento automático

Status do cluster

O status do cluster listado no portal do Azure pode ajudá-lo a monitorar as atividades de dimensionamento automático.

Enable worker node load-based autoscale cluster status.

Todas as mensagens de status do cluster que você pode ver são explicadas na lista a seguir.

Status do cluster Descrição
Executando O cluster está funcionando normalmente. Todas as atividades de dimensionamento automático anteriores foram concluídas com êxito.
Atualizar A configuração de dimensionamento automático do cluster está sendo atualizada.
Configuração do HDInsight Uma operação de expansão ou redução do cluster está em andamento.
Erro de atualização O HDInsight atendeu a problemas durante a atualização de configuração de dimensionamento automático. Os clientes podem optar por repetir a atualização ou desabilitar o dimensionamento automático.
Erro Algo está errado com o cluster e não é utilizável. Exclua este cluster e crie um novo.

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. Ou selecioneTamanho do cluster em Configurações.

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 de tempo.

SelecioneMétricas em Monitoramento. Em seguida, selecione Adicionar métrica e Número de trabalhadores ativos na caixa suspensa de Métrica. Selecione o botão no canto superior direito para alterar o intervalo de tempo.

Enable worker node schedule-based autoscale metric.

Práticas recomendadas

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

Pode levar de 10 a 20 minutos para que uma operação de escala geral seja concluída. Ao configurar um agendamento personalizado, planeje esse atraso. Por exemplo, se você precisar que o tamanho do cluster seja 20 às 9:00 AM, defina o gatilho de agendamento como um tempo anterior, como 8:30 AM ou mais cedo, para que a operação de escala seja concluída pela 9:00 AM.

Preparar para reduzir

Durante o processo de redução do dimensionamento do cluster, o Dimensionamento automático encerra os nós para atender ao tamanho do destino. No dimensionamento automático baseado em carga, se as tarefas estiverem sendo executadas nesses nós, o dimensionamento automático aguardará até que as tarefas sejam concluídas para os clusters do Spark e Hadoop. Como cada nó de trabalho também atende a uma função no HDFS, os dados temporários são deslocados para os nós de trabalho restantes. Verifique se há espaço suficiente nos nós restantes para hospedar todos os dados temporários.

Observação

No caso de redução vertical do Dimensionamento automático baseado em agendamento, a desativação normal não tem suporte. Isso pode causar falhas de trabalho durante uma operação de redução vertical e é recomendável planejar agendamentos com base nos padrões de plano de agendamento trabalho previstos para incluir tempo suficiente para que os trabalhos em andamento sejam concluídos. Você pode definir os agendamentos examinando a propagação histórica de tempos de conclusão para evitar falhas no trabalho.

Configurar o dimensionamento automático baseado em agendamento com base no padrão de uso

Você precisa entender o padrão de uso do cluster ao configurar o dimensionamento automático baseado em agendamento. O painel do Grafana pode ajudar a entender sua a carga de consulta e os slots de execução. Você pode saber quais slots de executor estão disponíveis e qual é o total de slots de executor no painel.

Aqui está uma maneira de estimar quantos nós de trabalho são necessários. Recomendamos dar outro buffer de 10% para lidar com a variação da carga de trabalho.

Número de slots do executor usados = Total de slots do executor — Total de slots do executor disponíveis.

Número de nós de trabalho necessários = Número de slots de executor realmente usados / (hive.llap.daemon.num.executors + hive.llap.daemon.task.scheduler.wait.queue.size)

*hive.llap.daemon.num.executors é configurável e o padrão é 4

*hive.llap.daemon.task.scheduler.wait.queue.size é configurável e o padrão é 10

Personalizar ações de script

As ações de script personalizadas são usadas principalmente para personalizar os nós (ou seja, HeadNode/WorkerNodes) que permitem que nossos clientes configurem determinadas bibliotecas e ferramentas que estão sendo usadas por eles. Um caso de uso comum é que os trabalhos executados no cluster podem ter algumas dependências de bibliotecas de terceiros, que são de propriedade do Cliente, e devem estar disponíveis nos nós para que o trabalho seja bem-sucedido. Para o Dimensionamento Automático, damos suporte a ações de script personalizadas, que são persistentes, portanto, toda vez que os novos nós são adicionados ao cluster como parte da operação para escalar verticalmente, essas ações de script persistentes são executadas e publicam que os contêineres ou tarefas seriam alocados neles. Embora as ações de script personalizadas ajudem a inicializar os novos nós, é aconselhável mantê-las mínimas, pois isso aumentaria a latência geral de escalar verticalmente e poderia causar impacto nas tarefas programadas.

Lembre-se do tamanho mínimo do cluster

Não dimensione o cluster para menos de três nós. Dimensionar o cluster para menos de três nós pode fazer com que ele fique preso no modo de segurança devido à replicação de arquivo insuficiente. Para obter mais informações, consulte Ficando preso no modo de segurança.

Microsoft Entra Domain Services e operações de colocação em escala

Se você usar um cluster do HDInsight com o Enterprise Security Package (ESP) ingressado em um domínio gerenciado do Microsoft Entra Domain Services, recomendamos a limitação da carga no Microsoft Entra Domain Services. Em estruturas de diretórios complexas , sincronização com escopo, recomendamos evitar o impacto nas operações de colocação em escala.

Defina o total de consultas simultâneas máximo na configuração do Hive para o cenário de pico de uso

Os eventos de dimensionamento automático não alteram a configuração do Hive Total de consultas simultâneas em Ambari. Isso significa que o Serviço Interativo do Hive Server 2 pode lidar apenas com um determinado número de consultas simultâneas em qualquer momento, mesmo que a contagem de daemons da consulta interativa seja escalada e reduzida verticalmente com base na carga e no cronograma. A recomendação geral é definir essa configuração para o cenário de pico de uso para evitar a intervenção manual.

No entanto, você pode experimentar uma falha de reinicialização do Hive Server 2 se houver apenas alguns nós de trabalho e o valor do total máximo de consultas simultâneas estiver configurado a um nível muito alto. No mínimo, você precisa do número mínimo de nós de trabalho que podem acomodar o número determinado de Tez Ams (igual à configuração total de consultas simultâneas máximas).

Limitações

Contagem de daemons de consulta interativa

Se os clusters do Interactive Query estiverem habilitados para dimensionamento automático, um evento de aumento ou redução do dimensionamento automático também pode escalar ou reduzir verticalmente o número de daemons do Interactive Query até o número de nós de trabalho ativos. A alteração no número de daemons não é persistida na num_llap_nodes Configuração em Ambari. Se os serviços do Hive forem reiniciados manualmente, o número de daemons de consulta interativa será redefinido de acordo com a configuração em Ambari.

Se o serviço de consulta interativa for reiniciado manualmente, você precisará alterar manualmente a configuração num_llap_node (o número de nós necessários para executar o daemon de consulta interativa do Hive) em Avançado Hive-Interactive-env para corresponder à contagem atual de nós do trabalho ativo. O cluster Interactive Query dá suporte apenas ao dimensionamento automático com base no agendamento

Próximas etapas

Leia sobre as diretrizes para dimensionar os clusters manualmente em Diretrizes de dimensionamento