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

Date de la dernière mise à jour : 18 janvier 2023

J'exécute des tâches Apache Spark sur un cluster Amazon EMR et le nœud principal est presque à court d'espace disque.

Résolution

Identification des nœuds principaux qui ne sont pas sains

Les nœuds auxquels au moins un volume Amazon Elastic Block Store (Amazon EBS) est attaché sont considérés comme non sains s'ils atteignent un taux d'utilisation du disque supérieur à 90 %. Pour déterminer quels nœuds peuvent avoir 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 d'un cluster EMR.

Remarque : Vous pouvez 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. 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 dans Comment résoudre les erreurs ExecutorLostFailure "Slave Lost" (Esclave perdu) dans Spark sur Amazon EMR ?

3.    Connectez-vous aux nœuds principaux, puis exécutez la commande suivante pour déterminer si un montage présente une forte utilisation :

df -h

Suppression des 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 consomment le reste de l'espace disque sur le nœud principal. Si la commande df -h indique que /mnt, par exemple, utilise plus de 90 % d'espace disque, vérifiez quels répertoires ou fichiers sont les plus utilisés.

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 est très utilisé, vérifiez l'utilisation du HDFS et supprimez tous les fichiers inutiles, tels que les fichiers journaux. La réduction de la période de conservation permet de nettoyer automatiquement les fichiers journaux du HDFS.

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

Réduction de la période de conservation des journaux d'événements Spark et de conteneurs YARN

Le répertoire /var/log est souvent la cause d'une utilisation élevée du HDFS. Le répertoire /var/log est l'endroit où sont stockés les fichiers journaux tels que les journaux d'événements Spark et les journaux de conteneurs YARN. Vous pouvez modifier la période de conservation de ces fichiers pour économiser de l'espace.

L'exemple de commande suivant affiche l'utilisation de /var/log/spark.

Remarque : /var/log/spark est le répertoire par défaut pour les journaux d'événements Spark.

hadoop fs -du -s -h /var/log/spark

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

Par défaut, les fichiers d'historique des tâches Spark se trouvent dans /var/log/spark/apps. Lorsque le nettoyeur d'historique du système de fichiers s'exécute, Spark supprime les fichiers d'historique des tâches de plus de sept jours. Pour réduire la période de conservation par défaut, procédez comme suit :

Sur un cluster en cours d'exécution :

1.    Connectez-vous au nœud principal via SSH.

2.    Ajoutez ou mettez à jour les valeurs suivantes dans /etc/spark/conf/spark-defaults.conf. La configuration suivante permet d'exécuter le nettoyeur toutes les 12 heures. La configuration efface les fichiers vieux de plus d'un jour. Vous pouvez personnaliser cette période en fonction de votre cas d'utilisation individuel dans les paramètres spark.history.fs.cleaner.internval et spark.history.fs.cleaner.maxAge.

------
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 12h
spark.history.fs.cleaner.maxAge 1d
------

3.    Redémarrez le serveur d'historique Spark.

Pendant le lancement du cluster :

Utilisez la configuration suivante. Vous pouvez personnaliser la période en fonction de votre cas d'utilisation individuel dans les paramètres spark.history.fs.cleaner.internval et spark.history.fs.cleaner.maxAge.

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

Pour plus d'informations sur ces paramètres, consultez Monitoring and Instrumentation dans la documentation Spark.

Réduction de la période de conservation par défaut des journaux de conteneurs YARN

Les journaux d'application Spark, qui sont les journaux de conteneurs YARN pour vos tâches Spark, sont situés dans /var/log/hadoop-yarn/apps sur le nœud principal. Spark déplace ces journaux vers le HDFS lorsque l'exécution de l'application est terminée. Par défaut, YARN conserve les journaux d'application sur le HDFS pendant 48 heures. Pour réduire la période de conservation :

1.    Connectez-vous au nœud principal, au nœud principal ou au nœud de tâche via SSH.

2.    Ouvrez le fichier /etc/hadoop/conf/yarn-site.xml sur chaque nœud de votre cluster Amazon EMR (nœuds primaires, principaux et 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. Pour plus d'informations, consultez Affichage et redémarrage d'Amazon EMR et des processus d'application (démons).

Vous pouvez également réduire la période de conservation en reconfigurant le cluster. Pour plus d'informations, consultez Reconfiguration d'un groupe d'instances dans un cluster en cours d'exécution.

Réduction de l'utilisation de /mnt/yarn

Si le répertoire /mnt/yarn est très utilisé, ajustez la période de conservation du cache utilisateur ou mettez à l'échelle les volumes EBS sur le nœud. Pour plus d'informations, consultez Comment empêcher le cache utilisateur d'une tâche Hadoop ou Spark de consommer trop d'espace disque dans Amazon EMR ?

Redimensionnement du cluster ou mise à l'échelle d'Amazon EMR

Ajoutez des nœuds principaux pour atténuer les problèmes d'espace HDFS. Ajoutez également l'un des nœuds principaux ou de tâche si des répertoires autres que les répertoires HDFS sont saturés. Pour plus d'informations, consultez Dimensionnement des ressources.

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, veuillez consulter les articles suivants :


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?