Passer au contenu

Pourquoi le nœud principal de mon cluster Amazon EMR manque-t-il d'espace disque ?

Lecture de 5 minute(s)
0

Je souhaite exécuter des tâches Apache Spark sur un cluster Amazon EMR, mais le nœud principal est presque à court d’espace disque.

Résolution

Déterminer si vos nœuds principaux sont non sains

Lorsque les nœuds auxquels au moins un volume Amazon Elastic Block Store (Amazon EBS) est attaché atteignent un taux d'utilisation du disque supérieur à 90 %, ils sont considérés comme non sains. Pour déterminer quels nœuds ont atteint 90 % d'utilisation du disque, procédez comme suit :

  1. Vérifiez la métrique MRUnhealthyNodes d’Amazon CloudWatch. Cette métrique indique le nombre de nœuds non sains dans un cluster EMR.
    Remarque : Vous pouvez également créer une alarme CloudWatch pour surveiller la métrique MRUnhealthyNodes.
  2. Connectez-vous au nœud primaire et accédez au journal du contrôleur d'instance à l'adresse /emr/instance-controller/log/instance-controller.log.
  3. Dans le journal du contrôleur d'instance, recherchez InstanceJointStatusMap pour identifier les nœuds non sains.
    Pour plus d'informations, consultez la section Utilisation élevée du disque en raison d'un nœud non sain de la rubrique Comment résoudre une erreur « ExecutorLostFailure: Slave lost » dans Spark sur Amazon EMR ?
  4. Pour déterminer si le taux d'utilisation d'un montage est élevé, connectez-vous aux nœuds principaux, puis exécutez la commande suivante :
    df -h

Supprimer les fichiers d'application Spark locaux et temporaires inutiles

Lorsque vous exécutez des tâches Spark, les applications Spark créent des fichiers locaux qui occupent l'espace disque restant sur le nœud principal. Par exemple, si la commande df -h indique que /mnt utilise plus de 90 % d'espace disque, vérifiez quels répertoires ou fichiers présentent une utilisation élevée.

Exécutez la commande suivante sur le nœud principal pour afficher les 10 répertoires qui utilisent le plus d'espace disque :

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

Si le répertoire /mnt/hdfs présente une utilisation élevée, vérifiez l'utilisation du système de fichiers distribué Hadoop (HDFS) et supprimez tous les fichiers inutiles, tels que les fichiers journaux. Pour vérifier l'utilisation de l'espace pour un répertoire spécifique, exécutez la commande suivante :

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

Remarque : Remplacez /path/to/dir par le chemin du répertoire pour lequel vous souhaitez vérifier l'utilisation de l'espace.

Réduire la période de conservation des journaux d’événements Spark et de conteneur YARN

Le répertoire /var/log stocke des fichiers journaux tels que les journaux d'événements Spark et les journaux de conteneur YARN. Pour nettoyer automatiquement les fichiers journaux de HDFS, réduisez la période de conservation.

Réduire la période de conservation par défaut des fichiers d'historique de tâches Spark

Par défaut, les fichiers d'historique de tâches Spark se trouvent dans /var/log/spark/apps. Lorsque l’outil de nettoyage de l'historique du système de fichiers s'exécute, Spark supprime les fichiers d'historique de tâches datant de plus de sept jours.

Pour réduire la période de conservation par défaut sur un cluster en cours d'exécution, procédez comme suit :

  1. Utilisez SSH pour vous connecter au nœud primaire.
  2. Ajoutez ou mettez à jour les valeurs suivantes dans /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 configuration précédente fait fonctionner l’outil de nettoyage toutes les 12 heures. La configuration efface les fichiers datant de plus d'un jour. Vous pouvez personnaliser cette période dans les paramètres spark.history.fs.cleaner.internval et spark.history.fs.cleaner.maxAge.
  3. Redémarrez le serveur d’historique Spark.

Pour réduire la période de conservation par défaut des fichiers d'historique de tâches Spark lorsque vous lancez le cluster, utilisez la configuration suivante :

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

Vous pouvez personnaliser la période dans les paramètres spark.history.fs.cleaner.interval et spark.history.fs.cleaner.maxAge.

Pour plus d'informations sur ces paramètres, consultez la page Surveillance et instrumentation sur le site Web d'Apache Spark.

Réduire la période de conservation par défaut des journaux de conteneur YARN

Les journaux d’application Spark sont les journaux de conteneur YARN pour vos tâches Spark, qui se trouvent dans /var/log/hadoop-yarn/apps sur le nœud principal. Spark déplace ces journaux vers HDFS lorsque l'application a terminé son exécution. Par défaut, YARN conserve les journaux d’application sur HDFS pendant 48 heures. Pour réduire la période de conservation, procédez comme suit :

  1. Utilisez SSH pour vous connecter aux nœuds primaires, principaux ou de tâches.
  2. Ouvrez le fichier /etc/hadoop/conf/yarn-site.xml sur chaque nœud de votre cluster EMR (nœud primaire, nœud principal et nœud de tâche).
  3. Réduisez la valeur de la propriété yarn.log-aggregation.retain-seconds sur tous les nœuds.
  4. Redémarrez le démon ResourceManager.

Vous pouvez également reconfigurer le cluster pour réduire la période de conservation.

Réduire l'utilisation de /mnt/yarn

Lorsque l'utilisation du disque dans le répertoire /mnt/yarn est élevée, ajustez la conservation du cache utilisateur ou mettez à l’échelle les volumes EBS sur le nœud. Pour plus d’informations, consultez la section Comment puis-je arrêter le cache utilisateur d’une tâche Hadoop ou Spark afin qu’il n’utilise pas trop d’espace disque dans Amazon EMR ?

Redimensionner le cluster ou effectuer une mise à l’échelle d’Amazon EMR

Pour éviter les problèmes d'espace HDFS, augmentez le nombre de nœuds principaux. En outre, si des répertoires autres que les répertoires HDFS sont saturés, augmentez le nombre de nœuds principaux ou de tâches. Pour plus d'informations, consultez la section Utiliser la mise à l'échelle du cluster Amazon EMR pour s'adapter à l'évolution des charges de travail.

Vous pouvez également étendre les volumes EBS dans les nœuds existants ou utiliser un script de mise à l’échelle dynamique. Pour plus d’informations, consultez la section Comment puis-je résoudre les échecs d’étape « no space left on device » dans une tâche Apache Spark sur Amazon EMR ?

Informations connexes

Configurer le matériel et la mise en réseau du cluster Amazon EMR

Configuration HDFS

Utilisation de systèmes de stockage et de fichiers avec Amazon EMR

AWS OFFICIELA mis à jour il y a 5 mois