Il cluster termina con NO_SLAVE_LEFT e i nodi principali FAILED_BY_MASTER - Amazon EMR

Il cluster termina con NO_SLAVE_LEFT e i nodi principali FAILED_BY_MASTER

In genere, ciò accade perché la protezione da cessazione è disabilitata e tutti i nodi principali superano la capacità di storage su disco come specificato da una soglia di utilizzo massimo nella classificazione di configurazione yarn-site, che corrisponde al file yarn-site.xml. Per impostazione predefinita, questo valore è 90%. Quando l'utilizzo del disco per un nodo principale supera la soglia di utilizzo, il servizio di stato NodeManager di YARN segnala il nodo come UNHEALTHY. Mentre è in questo stato, Amazon EMR elenca come negato il nodo e non assegna i container YARN a tale nodo. Se il nodo rimane nello stato non integro per 45 minuti, Amazon EMR contrassegna l'istanza Amazon EC2 associata per la terminazione come FAILED_BY_MASTER. Quando tutte le istanze Amazon EC2 associate con i nodi principali sono contrassegnate per la terminazione, il cluster viene terminato con lo stato NO_SLAVE_LEFT perché non vi sono risorse per l'esecuzione dei processi.

Il superamento dell'utilizzo del disco su un nodo principali potrebbe causare una reazione a catena. Se un singolo nodo supera la soglia di utilizzo del disco a causa di HDFS, è probabile che anche altri nodi siano vicini alla soglia. Il primo nodo supera la soglia di utilizzo del disco, quindi Amazon EMR lo elenca come negato. Ciò aumenta il carico di utilizzo del disco per i nodi rimanenti perché questi iniziano a replicare tra loro i dati HDFS che hanno perso sul nodo elencato come negato. Di conseguenza, ogni nodo diventa UNHEALTHY nello stesso modo e infine il cluster viene terminato.

Best practice e raccomandazioni

Configurazione di hardware cluster con archiviazione adeguata

Quando crei un cluster, accertati che vi sia un numero sufficiente di nodi principali e che ogni nodo disponga di volumi adeguati di storage EBS e instance store per HDFS. Per ulteriori informazioni, consulta Calcolo della capacità HDFS richiesta di un cluster. Puoi inoltre aggiungere istanze principali ai gruppi di istanze esistenti manualmente o utilizzando il dimensionamento automatico. Le nuove istanze hanno la stessa configurazione di storage delle altre istanze nel gruppo di istanze. Per ulteriori informazioni, consulta Uso del dimensionamento del cluster.

Abilitare la protezione da cessazione

Abilita la protezione da cessazione. In questo modo, se un nodo principale è elencato come negato, puoi connetterti all'istanza Amazon EC2 associata utilizzando SSH per risolvere i problemi relativi ai dati e recuperare i dati. Se abiliti la protezione da cessazione, ricorda che Amazon EMR non sostituisce l'istanza Amazon EC2 con una nuova istanza. Per ulteriori informazioni, consulta Utilizzo della protezione da cessazione.

Crea un allarme per il parametro CloudWatch MRUnhealthyNodes

Questo parametro indica il numero di nodi con stato UNHEALTHY. È equivalente al parametro YARN mapred.resourcemanager.NoOfUnhealthyNodes. Puoi impostare una notifica per questo allarme in modo che ti vengano segnalati i nodi non integri prima che venga raggiunto il timeout di 45 minuti. Per ulteriori informazioni, consulta Monitoraggio di parametri di Amazon EMR con CloudWatch.

Impostazioni Tweak mediante yarn-site

Le impostazioni riportate di seguito possono essere regolate in base ai requisiti dell'applicazione. Ad esempio, potresti voler aumentare la soglia di utilizzo del disco in base alla quale un nodo segnala lo stato UNHEALTHY aumentando il valore di yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage.

Puoi impostare questi valori quando crei un cluster utilizzando la classificazione di configurazione yarn-site. Per ulteriori informazioni, consulta Configurazione delle applicazioni nella Guida ai rilasci di Amazon EMR. Puoi inoltre connetterti alle istanze Amazon EC2 associate ai nodi principali tramite SSH, quindi aggiungere i valori in /etc/hadoop/conf.empty/yarn-site.xml utilizzando un editor di testo. Dopo aver apportato la modifica, devi riavviare hadoop-yarn-nodemanager come riportato di seguito.

Importante

Quando riavvii il servizio NodeManager, i container YARN attivi vengono terminati a meno che yarn.nodemanager.recovery.enabled non sia impostato su true mediante la classificazione di configurazione yarn-site quando crei il cluster. Devi inoltre specificare la directory in cui memorizzare lo stato del container utilizzando la proprietà yarn.nodemanager.recovery.dir.

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

Per ulteriori informazioni sulle proprietà yarn-site correnti e i valori predefiniti, consulta la pagina delle impostazioni predefinite di YARN nella documentazione di Apache Hadoop.

Proprietà Valore predefinito Descrizione

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

120000

La frequenza (in secondi) con cui viene eseguito il controllo dello stato del disco.

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

0.25

La frazione minima del numero di dischi che devono essere integri affinché NodeManager avvii nuovi container. Ciò corrisponde sia a yarn.nodemanager.local-dirs (per impostazione predefinita /mnt/yarn in Amazon EMR) che a yarn.nodemanager.log-dirs (per impostazione predefinita /var/log/hadoop-yarn/containers, del quale è eseguito il symlink a mnt/var/log/hadoop-yarn/containers in Amazon EMR).

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

90,0

La percentuale massima di utilizzo dello spazio su disco consentita dopo che un disco viene contrassegnato come difettoso. I valori possono andare da 0,0 a 100,0. Se il valore è maggiore o uguale a 100, NodeManager verifica la presenza di un disco intero. Ciò è valido per yarn-nodemanager.local-dirs e yarn.nodemanager.log-dirs.

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

0

Lo spazio minimo che deve essere disponibile su un disco affinché possa essere utilizzato. Ciò è valido per yarn-nodemanager.local-dirs e yarn.nodemanager.log-dirs.