Comment puis-je résoudre les problèmes liés à l'affichage de l'interface utilisateur Spark pour les tâches ETL AWS Glue ?

Lecture de 3 minute(s)
0

Je ne vois pas l'interface utilisateur Apache Spark pour les tâches ETL AWS Glue.

Résolution

Choisissez l'une des solutions suivantes, selon que vous accédez à l'interface utilisateur Spark avec une pile AWS CloudFormation ou avec Docker.

Pile AWS CloudFormation

Lorsque vous utilisez une pile AWS CloudFormation pour afficher l'interface utilisateur Spark, une instance Amazon Elastic Compute Cloud (Amazon EC2) effectue une demande HTTPS pour vérifier que l'interface utilisateur Spark fonctionne. Si cette demande échoue, l'erreur « WaitCondition a expiré. 0 condition reçue lorsque vous attendez 1 », s'affiche et la pile AWS CloudFormation est annulée.

Vérifiez les éléments suivants pour résoudre ce problème :

  • Sous-réseau : vérifiez que le sous-réseau peut atteindre le point de terminaison de l'API Amazon Simple Storage Service (Amazon S3). Par exemple, si vous utilisez un sous-réseau privé, puis vérifiez qu'il dispose d'un point de terminaison d'un VPC ou d'une passerelle NAT.
  • Port du serveur d'historique : assurez-vous que vous pouvez accéder au sous-réseau via le port du serveur d'historique Spark. Par exemple, un pare-feu peut bloquer le port.
  • Répertoire du journal des événements : vérifiez que vous avez saisi un chemin Amazon S3 valide pour le répertoire du journal des événements. Vous devez spécifier un chemin au format s3a ://. Si l'emplacement Amazon S3 que vous avez spécifié contient des fichiers journaux d'événements, c'est que le chemin est valide.

Si le message d'erreur persiste, vérifiez les groupes de journaux suivants dans Amazon CloudWatch Logs :

  • /aws-glue/sparkui_cfn/cfn-init.log
  • /aws-glue/sparkui_cfn/spark_history_server.log

Remarque : l'instance EC2 du serveur d'historique est résiliée lors de la restauration de la pile CloudFormation. Pour empêcher la résiliation de l'instance, activez la protection contre la résiliation pour la pile.

Docker

Si vous utilisez Docker pour afficher l'interface utilisateur de Spark et que vous ne parvenez pas à vous connecter au serveur d'historique Spark à partir de votre navigateur web, vérifiez les points suivants :

  • Assurez-vous que les informations d'identification AWS (clé d'accès et clé secrète) sont valides. Si vous souhaitez employer des informations d'identification temporaires, vous devez absolument utiliser spark.hadoop.fs.s3a.session.token dans la commande. Exemple :
$ docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS \
-Dspark.history.fs.logDirectory=s3a://path_to_eventlog \
-Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID
-Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY \
-Dspark.hadoop.fs.s3a.session.token=SESSION_TOKEN \
-Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" \
-p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
  • Vérifiez que vous avez saisi un chemin Amazon S3 valide pour le répertoire du journal des événements. Vous devez spécifier un chemin au format s3a ://. Si l'emplacement Amazon S3 que vous avez spécifié contient des fichiers journaux d'événements, le chemin est valide.
  • Vérifiez que vous avez saisi le bon numéro de port dans le navigateur. Par défaut, le numéro de port est 18080 (par exemple, http://localhost:18080). Pour modifier le numéro de port, modifiez le paramètre -p dans la commande et le paramètre spark.history.ui.port dans le Dockerfile.

Si vous ne parvenez toujours pas à afficher l'interface utilisateur Spark, vérifiez les journaux. Pour obtenir les journaux stdout et stderr pour le conteneur Docker, exécutez docker run avec le paramètre -it au lieu du paramètre -itd. Exemple :

$ docker run -it -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS \
-Dspark.history.fs.logDirectory=s3a://path_to_eventlog \
-Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID
-Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY \
-Dspark.hadoop.fs.s3a.session.token=SESSION_TOKEN \
-Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" \
-p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"

Informations connexes

Surveillance des tâches à l'aide de l'interface utilisateur web Apache Spark

Activation de l'interface utilisateur web Apache Spark pour les tâches AWS Glue

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 ans