Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Warum kann ich die Spark-Benutzeroberfläche für AWS Glue ETL-Jobs nicht sehen?
Wenn ich eine AWS CloudFormation-Vorlage oder einen Docker lokal verwende, kann ich die Apache Spark-Benutzeroberfläche für AWS Glue ETL-Jobs nicht sehen.
Lösung
Je nachdem, wie du auf die Spark-Benutzeroberfläche zugreifst, solltest du die folgenden Lösungsschritte ausführen.
CloudFormation-Stack
Wenn du einen CloudFormation-Stack verwenden, um die Spark-Benutzeroberfläche anzuzeigen, stellt eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance eine HTTPS-Anfrage. Diese Anfrage bestätigt, ob die Spark-Benutzeroberfläche funktioniert. Wenn die Anfrage fehlschlägt, erhältst du die folgende Fehlermeldung:
"WaitCondition timed out. Received 0 conditions when expecting 1,"
Nach dem Auftreten dieses Fehlers führt CloudFormation ein Rollback des Stacks durch.
Gehe wie folgt vor, um dieses Problem zu beheben:
- Bestätige, dass das Subnetz den Amazon Simple Storage Service (Amazon S3) API-Endpunkt erreichen kann. Wenn du beispielsweise ein privates Subnetz verwendest, stelle sicher, dass das Subnetz über einen VPC-Endpunkt (Virtual Private Cloud) oder ein NAT-Gateway verfügt.
- Bestätige, dass du über den Port des Spark-Verlaufsservers auf das Subnetz zugreifen kannst. Beispielsweise könnte eine Firewall den Port blockieren und den vorherigen Fehler verursachen.
- Vergewissere dich, dass du einen gültigen Amazon S3-Pfad für das Ereignisprotokollverzeichnis eingegeben hast. Du musst s3a:// für das Pfadschema der Ereignisprotokolle verwenden.
Hinweis: Wenn der von dir angegebene Amazon S3-Pfad Ereignisprotokolldateien enthält, ist der Pfad gültig.
Wenn du immer noch eine Fehlermeldung erhältst, überprüfe für weitere Details die folgenden Protokollgruppen in Amazon CloudWatch Logs:
- /aws-glue/sparkui_cfn/cfn-init.log
- /aws-glue/sparkui_cfn/spark_history_server.log
Hinweis: CloudFormation beendet die EC2-Instance des Verlaufs-Servers, wenn der Stack zurückgesetzt wird. Um die Instance nicht zu beenden, aktiviere den Kündigungsschutz für den Stack.
Docker
Wenn du Docker verwendest, um die Spark-Benutzeroberfläche anzuzeigen, und von deinem Browser aus keine Verbindung zum Spark-Verlaufsserver herstellen kannst, überprüfe die folgenden Konfigurationen:
-
Vergewissere dich, dass die AWS-Anmeldeinformationen für den Zugriffsschlüssel und den geheimen Schlüssel gültig sind. Um temporäre Anmeldeinformationen zu verwenden, musst du spark.hadoop.fs.s3a.session.token im Befehl verwenden. Beispielbefehl:
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"Hinweis: Ersetze AWS_ACCESS_KEY_ID durch deine Schlüssel-ID, AWS_SECRET_ACCESS_KEY durch deinen geheimen Zugriffsschlüssel und SESSION_TOKEN durch deinen Sitzungstoken.
-
Vergewissere dich, dass du einen gültigen Amazon S3-Pfad für das Ereignisprotokollverzeichnis eingegeben hast. Du musst s3a:// für das Pfadschema der Ereignisprotokolle verwenden.
Hinweis: Wenn der von dir angegebene Amazon S3-Pfad Ereignisprotokolldateien enthält, ist der Pfad gültig. -
Vergewissere dich, dass du die richtige Portnummer im Browser eingegeben hast. Um die Port-Nummer zu ändern, ändere den Parameter -p im Befehl docker run und den Parameter spark.history.ui.port in der Docker-Datei.
Hinweis: Die Standard-Port-Nummer ist 18080. Beispielport: http://localhost:18080.
Wenn du die Spark-Benutzeroberfläche immer noch nicht sehen kannst, überprüfe deine Protokolle auf weitere Details. Um die stdout- und stderr-Logs für den Docker-Container zu erhalten, führe docker run mit dem Parameter -it anstelle des Parameters -itd aus. Beispielbefehl:
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"
Hinweis: Ersetze AWS_ACCESS_KEY_ID durch deine Schlüssel-ID, AWS_SECRET_ACCESS_KEY durch deinen geheimen Zugriffsschlüssel und SESSION_TOKEN durch deinen Sitzungstoken.
Ähnliche Informationen
Überwachen von Jobs mithilfe der Apache Spark-Web-Benutzeroberfläche

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor einem Jahr