Salta al contenuto

Perché il nodo core del mio cluster Amazon EMR esaurisce lo spazio su disco?

5 minuti di lettura
0

Desidero eseguire processi Apache Spark in un cluster Amazon EMR, ma lo spazio su disco del nodo core è quasi esaurito.

Risoluzione

Determina se hai nodi core non integri

Quando i nodi a cui è collegato almeno un volume Amazon Elastic Block Store (Amazon EBS) raggiungono più del 90% di utilizzo del disco, vengono considerati non integri. Per determinare quali nodi hanno raggiunto il 90% di utilizzo del disco, completa i seguenti passaggi:

  1. Controlla la metrica MRUnhealthyNodes in Amazon CloudWatch. Questa metrica mostra il numero di nodi non integri in un cluster EMR.
    Nota: puoi creare un allarme in CloudWatch per monitorare la metrica MRUnhealthyNodes.
  2. Connettiti al nodo primario e accedi al log del controller dell'istanza all'indirizzo /emr/instance-controller/log/instance-controller.log.
  3. Nel log del controller dell'istanza, cerca InstanceJointStatusMap per identificare quali nodi non sono integri.
    Per ulteriori informazioni, consulta la sezione Utilizzo elevato del disco a causa di un nodo non integro in Come posso risolvere un "ExecutorLostFailure: Slave lost" error in Spark on Amazon EMR?
  4. Per determinare se un montaggio ha un utilizzo elevato, accedi ai nodi core ed esegui questo comando:
    df -h

Rimuovi i file dell'applicazione Spark locali e temporanei non necessari

Quando esegui processi Spark, le applicazioni Spark creano file locali che occupano lo spazio su disco rimanente nel nodo core. Ad esempio, se il comando df-h mostra che /mnt utilizza più del 90% di spazio su disco, controlla quali directory o file hanno un utilizzo elevato.

Esegui questo comando sul nodo core per visualizzare le prime 10 directory che utilizzano la maggior quantità di spazio su disco:

cd /mnt
sudo du -hsx * | sort -rh | head -10

Se la directory /mnt/hdfs ha un utilizzo elevato, controlla l'utilizzo del File system distribuito Hadoop (HDFS) e rimuovi tutti i file non necessari, come i file di log. Per verificare l'utilizzo dello spazio per una directory specifica, esegui questo comando:

hdfs dfsadmin -report
hadoop fs -du -s -h /path/to/dir

Nota: sostituisci /path/to/dir con il percorso della directory per la quale vuoi controllare l'utilizzo dello spazio.

Riduci il periodo di conservazione degli eventi Spark e dei log dei container YARN

La directory /var/log memorizza i file di log come i log degli eventi di Spark e i log dei container YARN. Per pulire automaticamente i file di log da HDFS, riduci il periodo di conservazione.

Riduci il periodo di conservazione predefinito per i file della cronologia dei processi Spark

Per impostazione predefinita, i file della cronologia dei processi Spark si trovano in /var/log/spark/apps. Quando viene eseguito lo strumento di pulizia della cronologia del file system, Spark elimina i file della cronologia dei processi che hanno più di sette giorni.

Per ridurre il periodo di conservazione predefinito su un cluster in esecuzione, completa i seguenti passaggi:

  1. Utilizza SSH per connetterti al nodo primario.
  2. Aggiungere o aggiornare i seguenti valori in /etc/spark/conf/spark-defaults.conf:
    ------spark.history.fs.cleaner.enabled true
    spark.history.fs.cleaner.interval 12h
    spark.history.fs.cleaner.maxAge 1d
    ------
    La configurazione precedente esegue lo strumento di pulizia ogni 12 ore. La configurazione cancella i file che hanno più di 1 giorno. Puoi personalizzare il periodo di conservazione nei parametri spark.history.fs.cleaner.internval e spark.history.fs.cleaner.maxAge.
  3. Riavvia Spark History Server.

Per ridurre il periodo di conservazione predefinito per i file della cronologia dei processi Spark all'avvio del cluster, utilizza la seguente configurazione:

{
    "Classification": "spark-defaults",
    "Properties": {
        "spark.history.fs.cleaner.enabled": "true",
        "spark.history.fs.cleaner.interval": "12h",
        "spark.history.fs.cleaner.maxAge": "1d"
    }
}

Puoi personalizzare il periodo di conservazione nei parametri spark.history.fs.cleaner.interval e spark.history.fs.cleaner.maxAge.

Per ulteriori informazioni su questi parametri, consulta Monitoring and instrumentation (Monitoraggio e strumentazione) sul sito web Apache Spark.

Riduci il periodo di conservazione predefinito dei log dei container YARN

I log delle applicazioni Spark sono i log dei container YARN per i processi Spark, che si trovano in /var/log/hadoop-yarn/apps nel nodo core. Spark sposta questi log in HDFS al termine dell'esecuzione dell'applicazione. Per impostazione predefinita, YARN conserva i log delle applicazioni in HDFS per 48 ore. Per ridurre il periodo di conservazione, completa i seguenti passaggi:

  1. Utilizza SSH per connetterti al nodo primario, al nodo core o al nodo attività.
  2. Apri il file /etc/hadoop/conf/yarn-site.xml in ogni nodo del cluster EMR (primario, core e attività).
  3. Riduci il valore della proprietà yarn.log-aggregation.retain-seconds in tutti i nodi.
  4. Riavvia il daemon ResourceManager.

Puoi inoltre riconfigurare il cluster per ridurre il periodo di conservazione.

Riduci l'utilizzo di /mnt/yarn

Quando l'utilizzo del disco nella directory /mnt/yarn è elevato, regola la conservazione nella cache dell'utente o ridimensiona i volumi EBS nel nodo. Per ulteriori informazioni, consulta Come posso bloccare la cache utente di un processo Hadoop o Spark in modo che la cache non utilizzi troppo spazio su disco in Amazon EMR?

Ridimensiona il cluster o scala Amazon EMR

Per evitare problemi di spazio di HDFS, ridimensiona il numero dei nodi core. Inoltre, se le directory diverse da HDFS sono piene, ridimensiona il numero di nodi core o nodi attività. Per ulteriori informazioni, consulta Usa la scalabilità dei cluster Amazon EMR per adattarti ai carichi di lavoro in continua evoluzione.

Puoi inoltre estendere i volumi EBS nei nodi esistenti o utilizzare uno script di dimensionamento dinamico. Per ulteriori informazioni, consulta Come posso risolvere gli errori di fase "no space left on device" in un processo Apache Spark su Amazon EMR?

Informazioni correlate

Configurazione dell'hardware e della rete del cluster Amazon EMR

Configurazione HDFS

Utilizzo dello spazio di archiviazione e dei file system con Amazon EMR

AWS UFFICIALEAggiornata 5 mesi fa