Escalar automaticamente os clusters do Azure HDInsight

O HDInsight oferece elasticidade com opções de escalar e reduzir verticalmente o número de nós de trabalho nos clusters. Ess elasticidade permite a redução de um cluster após horas ou nos finais de semana. E expandi-lo durante picos de demandas corporativas.

Escale verticalmente o cluster antes do processamento periódico em lotes para que o cluster tenha recursos adequados. Após a conclusão do processamento e a redução do uso, reduza verticalmente o cluster HDInsight, obtendo menos nós de trabalho.

É possível dimensionar um cluster manualmente usando um dos métodos a seguir. Também é possível usar opções de dimensionamento automático para automaticamente escalar e reduzir verticalmente em resposta a determinadas métricas.

Observação

Somente clusters HDInsight versão 3.1.3 ou superior são compatíveis. Se não tiver certeza quanto à versão de seu cluster, você poderá verificar a página Propriedades.

Utilitários para dimensionar clusters

A Microsoft fornece os seguintes utilitários para dimensionar clusters:

Utilitário Descrição
PowerShell Az Set-AzHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
AzureRM do PowerShell Set-AzureRmHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
CLI do Azure az hdinsight resize --resource-group RESOURCEGROUP --name CLUSTERNAME --workernode-count NEWSIZE
CLI clássica do Azure azure hdinsight cluster resize CLUSTERNAME NEWSIZE
Portal do Azure Abra o painel do cluster HDInsight, selecione Tamanho do cluster no menu à esquerda e, em seguida, no painel de Tamanho do cluster, digite o número de nós de trabalho e selecione Salvar.

Azure portal scale cluster option.

Usando qualquer um desses métodos, você pode aumentar ou reduzir verticalmente seu cluster HDInsight em apenas alguns minutos.

Importante

  • A CLI clássica do Azure foi preterida e só deve ser usada com o modelo clássico de implantação. Para todas as outras implantações, use a CLI do Azure.
  • O módulo AzureRM do PowerShell foi preterido. Use o módulo AZ sempre que possível.

Impacto das operações de dimensionamento

Ao adicionar nós ao cluster HDInsight em execução (escalar verticalmente), os trabalhos não serão afetados. Novos trabalhos podem ser enviados com segurança enquanto o processo de colocação em escala está em execução. Se a operação de dimensionamento falhar, a falha deixará o cluster em um estado funcional.

Se você remover nós (reduzir verticalmente), os trabalhos pendentes ou em execução falharão quando a operação de dimensionamento for concluída. Essa falha ocorre devido à reinicialização de alguns dos serviços durante o processo de dimensionamento. O cluster pode ficar preso no modo de segurança durante uma operação de dimensionamento manual.

O impacto da alteração do número de nós de dados varia em cada tipo de cluster com suporte do HDInsight:

  • Apache Hadoop

    É possível aumentar continuamente o número de nós de trabalho em um cluster Hadoop em execução sem afetar nenhum trabalho. Novos trabalhos também podem ser enviados enquanto a operação está em andamento. As falhas em uma operação de dimensionamento são tratadas normalmente. O cluster sempre é deixado em um estado funcional.

    Quando um cluster Hadoop é reduzir verticalmente com menos nós de dados, alguns serviços são reiniciados. Esse comportamento faz com que todos os trabalhos em execução e pendentes falhem após a conclusão da operação de dimensionamento. Você pode, no entanto, reenviar os trabalhos quando a operação for concluída.

  • HBase no Apache

    É possível adicionar ou remover nós continuamente do cluster HBase durante sua execução. Servidores Regionais são equilibrados automaticamente em alguns minutos após o término da operação de dimensionamento. No entanto, também é possível balancear manualmente os servidores regionais. Faça logon no headnode do cluster e execute os seguintes comandos:

    pushd %HBASE_HOME%\bin
    hbase shell
    balancer
    

    Para obter mais informações sobre como usar o shell do HBase, consulte Introdução a um exemplo do Apache HBase em HDInsight.

  • Kafka

    Você deverá redistribuir as réplicas de partições após as operações de dimensionamento. Para obter mais informações, consulte o documento Alta disponibilidade de dados com o Apache Kafka no HDInsight.

  • LLAP do Apache Hive

    Depois de dimensionar para N nós de trabalho, o HDInsight definirá automaticamente as configurações a seguir e reiniciará o Hive.

    • Total máximo de consultas simultâneas: hive.server2.tez.sessions.per.default.queue = min(N, 32)
    • Número de nós usados pelo LLAP do Hive: num_llap_nodes = N
    • Número de nós para executar o daemon do LLAP do Hive: num_llap_nodes_for_llap_daemons = N

Como reduzir verticalmente um cluster com segurança

Reduzir verticalmente um cluster com trabalhos em execução

Para evitar que seus trabalhos em execução falhem durante uma operação de redução vertical, é possível tentar três coisas:

  1. Aguarde a conclusão dos trabalhos antes de reduzir verticalmente o cluster.
  2. Encerrar manualmente os trabalhos.
  3. Reabra os trabalhos após a conclusão da operação de dimensionamento.

Para ver uma lista de trabalhos pendentes e em execução, é possível usar o YARN da interface do usuário do Resource Manager, seguindo estas etapas:

  1. No portal do Azure, selecione o cluster. O cluster abre em uma nova página do portal.

  2. Na exibição principal, navegue até a Página inicial do Ambari>nos Painéis de cluster. Insira suas credenciais de cluster.

  3. Na interface do usuário do Ambari, selecione YARN na lista de serviços no menu à esquerda.

  4. Na página do YARN, selecione Links rápidos e passe o mouse sobre o headnode ativo e, em seguida, selecione Interface do usuário do Resource Manager.

    Apache Ambari quick links Resource Manager UI.

É possível acessar diretamente a interface do usuário do Resource Manager com https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster.

Você vê uma lista de trabalhos com os respectivos estados atuais. Na captura de tela, há um trabalho em execução:

Resource Manager UI applications.

Para encerrar manualmente o aplicativo em execução, execute o seguinte comando no shell SSH:

yarn application -kill <application_id>

Por exemplo:

yarn application -kill "application_1499348398273_0003"

Travamento no modo de segurança

Ao reduzir verticalmente, o HDInsight usa interfaces de gerenciamento do Apache Ambari para, primeiro, encerrar nós de trabalho extras. Os nós replicam seus blocos HDFS para outros nós de trabalho online. Depois disso, o HDInsight reduz verticalmente o cluster com segurança. O HDFS entra no modo de segurança durante a operação de dimensionamento. O HDFS deve sair após a conclusão do dimensionamento. Em alguns casos, no entanto, o HDFS fica preso no modo de segurança durante uma operação de dimensionamento devido à sub-replicação do bloco de arquivos.

Por padrão, o HDFS é configurado com uma definição dfs.replication de 1 que controla quantas cópias de cada bloco de arquivos estão disponíveis. Cada cópia de um bloco de arquivos é armazenada em um nó diferente do cluster.

Quando o número esperado de cópias de bloco não estiver disponível, o HDFS entrará no modo de segurança e o Ambari gera alertas. O HDFS pode entrar no modo de segurança para uma operação de dimensionamento. O cluster poderá ficar preso no modo de segurança se o número necessário de nós não for detectado para replicação.

Erros de exemplo quando o modo de segurança está ativado

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive/hive/819c215c-6d87-4311-97c8-4f0b9d2adcf0. Name node is in safe mode.
org.apache.http.conn.HttpHostConnectException: Connect to active-headnode-name.servername.internal.cloudapp.net:10001 [active-headnode-name.servername. internal.cloudapp.net/1.1.1.1] failed: Connection refused

Você pode examinar os logs de nó de nome na pasta /var/log/hadoop/hdfs/, próximos ao horário em que o cluster foi dimensionado, para ver quando ele entrou em modo de segurança. Os arquivos de log são nomeados Hadoop-hdfs-namenode-<active-headnode-name>.*.

A causa raiz foi que o Hive depende de arquivos temporários no HDFS durante a execução de consultas. Quando o HDFS entra em modo de segurança, o Hive não consegue executar consultas por não poder gravar no HDFS. Os arquivos temporários no HDFS estão localizados na unidade local montada para VMs individuais de nós de trabalho. Os arquivos são replicados entre outros nós de trabalho em três réplicas, no mínimo.

Como impedir que o HDInsight fique preso no modo de segurança

Há várias maneiras de impedir que o HDInsight permaneça no modo de segurança:

  • Pare todos os trabalhos do Hive antes de reduzir verticalmente o HDInsight. Como alternativa, agende o processo de redução vertical para evitar conflito com trabalhos do Hive em execução.
  • Limpe manualmente os arquivos do diretório tmp temporários do Hive no HDFS antes de reduzir verticalmente.
  • Reduza verticalmente o HDInsight somente até o mínimo de três nós de trabalho. Evite chegar até somente um nó de trabalho.
  • Execute o comando para sair do modo de segurança, se necessário.

As seções a seguir descrevem essas opções.

Interromper todos os trabalhos do Hive

Interrompa todos os trabalhos do Hive antes de reduzir verticalmente a um nó de trabalho. Se a carga de trabalho estiver agendada, execute a redução vertical após a conclusão do trabalho do Hive.

Parar os trabalhos do Hive antes do dimensionamento ajuda a minimizar o número de arquivos transitórios na pasta tmp (se houver).

Limpar manualmente os arquivos temporários do Hive

Se o Hive deixou arquivos temporários na pasta, você pode limpar manualmente esses arquivos antes de reduzir verticalmente, evitando o modo de segurança.

  1. Verifique qual local está sendo usado para arquivos temporários do Hive observando a propriedade de configuração hive.exec.scratchdir. Esse parâmetro é definido em /etc/hive/conf/hive-site.xml:

    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://mycluster/tmp/hive</value>
    </property>
    
  2. Interrompa os serviços do Hive e verifique se todas as consultas e os trabalhos foram concluídos.

  3. Liste os conteúdos do diretório temporário encontrado acima, hdfs://mycluster/tmp/hive/ para ver se ele contém algum arquivo:

    hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    

    Aqui está um exemplo de saída quando há arquivos:

    sshuser@scalin:~$ hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/_tmp_space.db
    -rw-r--r--   3 hive hdfs         27 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.info
    -rw-r--r--   3 hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.lck
    drwx------   - hive hdfs          0 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699
    -rw-r--r--   3 hive hdfs         26 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699/inuse.info
    
  4. Se souber que Hive terminou de usar esses arquivos, você poderá removê-los. Certifique-se de que o Hive não tenha nenhuma consulta em execução observando a página de interface do usuário do Resource Manager do Yarn.

    Linha de comando de exemplo para remover arquivos do HDFS:

    hadoop fs -rm -r -skipTrash hdfs://mycluster/tmp/hive/
    

Dimensionar o HDInsight para três nós de trabalho

Se os clusters ficarem presos no modo de segurança com frequência ao reduzir verticalmente para menos de três nós de trabalho, mantenha, pelo menos, três nós de trabalho.

Ter três nós de trabalho é mais dispendioso do que reduzir verticalmente para apenas um nó de trabalho. No entanto, essa ação impedirá que o cluster fique preso no modo de segurança.

Reduzir verticalmente o HDInsight para um nó de trabalho

Mesmo quando o cluster for reduzido verticalmente para um nó, o nó de trabalho 0 ainda sobreviverá. O nó de trabalho 0 nunca pode ser encerrado.

Executar o comando para sair do modo de segurança

A opção final é executar o comando sair do modo de segurança. Se o HDFS tiver entrado no modo de segurança devido à sub-replicação do arquivo Hive, execute o seguinte comando para sair do modo de segurança:

hdfs dfsadmin -D 'fs.default.name=hdfs://mycluster/' -safemode leave

Reduzir verticalmente um cluster do Apache HBase

Os servidores de região são automaticamente balanceados em alguns minutos após a conclusão da operação de dimensionamento. Para balancear manualmente servidores de região, use as seguintes etapas:

  1. Conecte-se ao cluster HDInsight usando SSH. Para obter mais informações, confira Usar SSH com HDInsight.

  2. Inicie o shell do HBase:

    hbase shell
    
  3. Use o seguinte comando para balancear manualmente os servidores de região:

    balancer
    

Próximas etapas

Para obter informações específicas sobre como dimensionar o cluster HDInsight, consulte: