O cluster do Amazon EMR é encerrado com NO_SLAVE_LEFT e nós centrais FAILED_BY_MASTER - Amazon EMR

O cluster do Amazon EMR é encerrado com NO_SLAVE_LEFT e nós centrais FAILED_BY_MASTER

Geralmente, isso acontece porque a proteção contra encerramento está desabilitada, e todos os nós core excedem a capacidade de armazenamento em disco, conforme especificado por um limite de utilização máxima na classificação de configuração yarn-site, que corresponde ao arquivo yarn-site.xml. Esse valor é 90%, por padrão. Quando a utilização do disco para um nó core excede o limite de utilização, o serviço de integridade NodeManager do YARN relata o nó como UNHEALTHY. Enquanto ele estiver nesse estado, o Amazon EMR coloca o nó na lista de negação e não aloca contêineres YARN a ele. Se o nó permanecer não íntegro por 45 minutos, o Amazon EMR marcará a instância associada do Amazon EC2 para término como FAILED_BY_MASTER. Quando todas as instâncias do Amazon EC2 associadas a nós centrais são marcadas para término, o cluster é terminado com o status NO_SLAVE_LEFT porque não há recursos para executar trabalhos.

Ultrapassar a utilização de disco em um nó core pode causar uma reação em cadeia. Se um único nó exceder o limite de utilização de disco por causa do HDFS, outros nós também poderão estar perto do limite. O primeiro nó excede o limite de utilização de disco, então o Amazon EMR o coloca na lista de negação. Isso aumenta a carga de utilização do disco para os nós restantes, pois eles começam a replicar dados do HDFS entre si que foram perdidos no nó que está na lista de negação. Cada nó subsequentemente entra no status UNHEALTHY da mesma maneira, e o cluster por fim é encerrado.

Práticas recomendadas e orientações

Configurar o hardware do cluster com armazenamento adequado

Ao criar um cluster, certifique-se de que haja nós core suficientes e que cada um tenha um armazenamento de instâncias adequado e volumes de armazenamento do EBS para HDFS. Para ter mais informações, consulte Calcular a capacidade necessária do HDFS de um cluster. Você também pode adicionar instâncias core aos grupos de instâncias existentes manualmente ou usando a escalabilidade automática. As novas instâncias têm a mesma configuração de armazenamento que outras instâncias no grupo de instâncias. Para ter mais informações, consulte Use o ajuste de escala de cluster do Amazon EMR para se ajustar às mudanças nas workloads.

Habilitar a proteção contra encerramento

Habilitar a proteção contra encerramento. Dessa forma, se um nó central estiver na lista de negação, você poderá se conectar à instância associada do Amazon EC2 usando SSH para solucionar problemas e recuperar dados. Se você habilitar a proteção contra término, lembre-se de que o Amazon EMR não substitui a instância do Amazon EC2 por uma nova instância. Para ter mais informações, consulte Uso da proteção contra encerramento para proteger clusters do Amazon EMR do desligamento acidental.

Crie um alarme para a métrica MRUnhealthyNodes do CloudWatch

Essa métrica informa o número de nós com o status UNHEALTHY. É equivalente à métrica do YARN mapred.resourcemanager.NoOfUnhealthyNodes. Você pode configurar uma notificação desse alarme para avisá-lo de nós não íntegros antes que o limite de 45 minutos seja atingido. Para ter mais informações, consulte Monitorar o Amazon EMR com o CloudWatch.

Ajustar as configurações com yarn-site

As configurações a seguir podem ser ajustadas de acordo com os requisitos do aplicativo. Por exemplo, talvez você queira aumentar o limite de utilização de disco onde um nó informa UNHEALTHY ao aumentar o valor de yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage.

Você pode definir esses valores ao criar um cluster usando a classificação de configuração yarn-site. Para obter mais informações, consulte Configuring applications no Guia de lançamento do Amazon EMR. Você também pode se conectar às instâncias do Amazon EC2 associadas a nós centrais usando SSH e, em seguida, adicionar os valores /etc/hadoop/conf.empty/yarn-site.xml usando um editor de texto. Depois de fazer as alterações, você deve reiniciar hadoop-yarn-nodemanager, conforme mostrado abaixo.

Importante

Quando você reiniciar o serviço NodeManager, os contêineres do YARN ativos serão desativados, a menos que yarn.nodemanager.recovery.enabled seja definido como true usando a classificação de configuração yarn-site ao criar o cluster. Você também deve especificar o diretório no qual armazenar um estado de contêiner usando a propriedade yarn.nodemanager.recovery.dir.

sudo /sbin/stop hadoop-yarn-nodemanager sudo /sbin/start hadoop-yarn-nodemanager

Para obter mais informações sobre as propriedades yarn-site atuais e valores padrão, consulte Configurações padrão do YARN na documentação do Apache Hadoop.

Propriedade Valor padrão Descrição

yarn.nodemanager.disk-health-checker.interval-ms

120000

A frequência (em segundos) em que o verificador de integridade do disco é executado.

yarn.nodemanager.disk-health-checker.min-healthy-disks

0.25

A fração mínima do número de discos que precisam estar íntegros para o NodeManager iniciar novos contêineres. Isso corresponde a yarn.nodemanager.local-dirs (por padrão, /mnt/yarn no Amazon EMR) e yarn.nodemanager.log-dirs (por padrão /var/log/hadoop-yarn/containers, que apresenta um link simbólico para mnt/var/log/hadoop-yarn/containers no Amazon EMR).

yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage

90.0

A porcentagem máxima de utilização de espaço em disco permitido depois que um disco é marcado como inválido. Os valores variam de 0,0 a 100,0. Se o valor for maior que ou igual a 100, o NodeManager verificará a existência de um disco cheio. Isso se aplica a yarn-nodemanager.local-dirs e a yarn.nodemanager.log-dirs.

yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb

0

O espaço mínimo que deve estar disponível em um disco para que ele seja usado. Isso se aplica a yarn-nodemanager.local-dirs e a yarn.nodemanager.log-dirs.