Opções de redução vertical da escala para os clusters do Amazon EMR
nota
Não há mais suporte para as opções de comportamento de redução da escala verticalmente desde o Amazon EMR versão 5.10.0. Por causa da introdução do faturamento por segundo no Amazon EC2, o comportamento padrão da redução da escala verticalmente para clusters do Amazon EMR agora é terminar na conclusão da tarefa.
Com o Amazon EMR versões 5.1.0 a 5.9.1, há duas opções para o comportamento da redução da escala verticalmente: terminar no limite de instâncias por hora de acordo com o faturamento do Amazon EC2 ou terminar quando a tarefa for concluída. A partir do Amazon EMR versão 5.10.0, a configuração de término ao atingir o limite de hora de instância se torna defasada por causa da introdução do faturamento por segundo no Amazon EC2. Não recomendamos especificar o encerramento no limite de tempo de execução da instância em que a opção está disponível.
Atenção
Se você usar a AWS CLI para enviar um modify-instance-groups
com EC2InstanceIdsToTerminate
, essas instâncias serão encerradas imediatamente, sem considerar essas configurações e independentemente do status dos aplicativos em execução nelas. O encerramento de uma instância dessa forma tem o risco de perda de dados e de comportamento imprevisível do cluster.
Quando o término na conclusão da tarefa é especificado, o Amazon EMR colocas as tarefas em listas de negação e as remove dos nós antes de terminar as instâncias do Amazon EC2. Em ambos os comportamentos especificados, o Amazon EMR não termina as instâncias do Amazon EC2 em grupos de instâncias centrais se houver a possibilidade de danos ao HDFS.
Terminar na conclusão de tarefas
O Amazon EMR permite que você reduzir a escala verticalmente do cluster sem afetar a sua workload. O Amazon EMR desativa normalmente o YARN, o HDFS e os outros daemons nos nós centrais e nós de tarefa durante uma operação de redimensionamento para redução sem perder dados nem interromper trabalhos. O Amazon EMR reduzirá o tamanho de grupos de instâncias somente se o trabalho atribuído a eles tiver sido concluído e eles estiverem ociosos. Para desativar normalmente o YARN NodeManager, você pode ajustar manualmente o tempo em que um nó aguarda pela desativação.
Este tempo é definido usando uma propriedade na a classificação de configuração YARN-site
. Usando o Amazon EMR versão 5.12.0 e posterior, especifique a propriedade YARN.resourcemanager.nodemanager-graceful-decommission-timeout-secs
. Ao usar versões anteriores do Amazon EMR, especifique a propriedade YARN.resourcemanager.decommissioning.timeout
.
Se ainda houver contêineres ou aplicativos do YARN em execução quando o tempo limite de desativação for ultrapassado, o nó será obrigatoriamente desativado e o YARN reprogramará os contêineres afetados em outros nós. O valor padrão é de 3.600 segundos (uma hora). Você pode definir esse tempo limite com um valor arbitrariamente alto para forçar a redução amigável a esperar mais tempo. Para obter mais informações, consulte Graceful Decommission of YARN nodes
Grupos de nós de tarefa
O Amazon EMR seleciona, de forma inteligente, as instâncias que não têm tarefas em execução relacionadas a etapas ou aplicações e as remove primeiro do cluster. Se todas as instâncias do cluster estiverem em uso, o Amazon EMR aguardará a conclusão das tarefas da instância antes de removê-la do cluster. O tempo de espera padrão é 1 hora. Esse valor pode ser alterado com a configuração YARN.resourcemanager.decommissioning.timeout
. O Amazon EMR usa a nova configuração dinamicamente. Você pode definir isso como um número arbitrariamente grande para garantir que o Amazon EMR não termine nenhuma tarefa ao reduzir o tamanho do cluster.
Grupos de nós centrais
Em nós centrais, os daemons NodeManager do YARN e DataNode do HDFS devem ser desativados para que o grupo de instâncias seja reduzido. Para o YARN, a redução amigável garante que um nó marcado para desativação seja passado para o estado DECOMMISSIONED
somente se não houver contêineres ou aplicações pendentes ou não concluídas. A desativação termina imediatamente se não há contêineres em execução no nó no início da desativação.
Para o HDFS, a redução amigável certifica-se de que a capacidade de destino do HDFS é grande o suficiente para comportar todos os blocos existentes. Se a capacidade alvo não for grande o suficiente, apenas uma parte das instâncias core serão desativadas, de forma que os nós restantes possam lidar com os dados atuais residentes no HDFS. Você deve garantir o aumento da capacidade no HDFS para permitir uma desativação mais extensa. Tente também minimizar a E/S de gravação antes de tentar reduzir os grupos de instâncias. O excesso de E/S de gravação poderá atrasar a conclusão da operação de redimensionamento.
Outro limite é o fator de replicação padrão dfs.replication
no /etc/hadoop/conf/hdfs-site
. Ao criar um cluster, o Amazon EMR configura o valor com base no número de instâncias no cluster: 1
para clusters com uma a três instâncias, 2
para clusters com quatro a nove instâncias e 3
para clusters com mais de dez instâncias.
Atenção
-
Definir
dfs.replication
como 1 em clusters com menos de quatro nós poderá causar perda de dados do HDFS se um único nó ficar inativo. É recomendável usar um cluster com pelo menos quatro nós centrais para workloads de produção. -
O Amazon EMR não permitirá que os clusters escalem os nós principais abaixo de
dfs.replication
. Por exemplo, sedfs.replication = 2
, o número mínimo de nós central será 2. -
Ao usar o Ajuste de Escala Gerenciado, o Auto Scaling ou optar por redimensionar manualmente o cluster, é recomendável definir
dfs.replication
como 2 ou mais.
A redução amigável não permite reduzir os nós centrais abaixo do fator de replicação do HDFS. Isso permite que o HDFS feche arquivos devido à insuficiência de réplicas. Para contornar esse limite, reduza o fator de replicação e reinicie o daemon NameNode.