Lorsque j'exécute des tâches Apache Spark Streaming, les journaux occupent l'espace disque restant sur le noyau et les nœuds de tâches de mon cluster Amazon EMR.

Spark alloue un conteneur YARN à chaque exécuteur de la tâche Streaming. Logpusher ne charge pas les journaux sur Amazon Simple Storage Service (Amazon S3) tant que le conteneur n'est pas arrêté ou supprimé. Plus le conteneur met de temps à s'arrêter, plus il consomme d'espace disque sur les nœuds du cluster. À terme, le conteneur peut consommer l'espace disque restant des nœuds.

Pour résoudre ce problème, configurez la rotation des journaux pour les tâches Spark en modifiant le fichier de propriétés Log4j, qui se trouve dans le répertoire /etc/spark/conf.

Pour les versions Amazon EMR antérieures à la version 5.18.0, procédez comme suit pour configurer manuellement la rotation de journaux. (Amazon EMR version 5.18.0 ou ultérieure procède automatiquement à la rotation de journaux de conteneur Spark Streaming toutes les heures.)

1.    Connectez-vous au nœud maître à l'aide de SSH.

2.    Sur chaque nœud de votre cluster Amazon EMR (maître, noyau et nœuds de tâches), remplacez le contenu de /etc/spark/conf/log4j.properties par la configuration suivante. Cette configuration utilise la classe RollingFileAppender pour procéder à la rotation des fichiers journaux de conteneur lorsque ceux-ci dépassent 100 000 octets. Chaque fichier faisant l'objet d'une rotation est nommé avec son horodatage afin d'éviter que des fichiers dupliqués ne soient chargés dans S3.

log4j.rootLogger=INFO,file
log4j.appender.file.encoding=UTF-8
log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.file.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.RollingPolicy.FileNamePattern=${spark.yarn.app.container.log.dir}/spark-%d{yyyy-MM-dd-HH-mm-ss}.log
log4j.appender.file.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
log4j.appender.file.TriggeringPolicy.maxFileSize=100000
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file.Append=true

3.    Pour éviter les erreurs d'autorisation, exécutez spark-submit en tant que sudo.

Lors de l'exécution suivante d'une tâche Spark Streaming, les journaux sont chargés sur S3 lorsque leur taille est supérieure à 100 000 octets. Ceci empêche le conteneur de consommer l'espace disque restant sur le noyau et les nœuds de tâches de votre cluster EMR.


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 04/12/2018