Wie kann ich Probleme mit der Anzeige der Spark-UI für AWS Glue ETL-Jobs beheben?

Lesedauer: 3 Minute
0

Ich kann die Apache Spark-UI für AWS Glue ETL-Jobs nicht sehen.

Behebung

Wählen Sie eine der folgenden Lösungen, je nachdem, wie Sie auf die Spark-UI mit einem AWS CloudFormation-Stack oder mit Docker zugreifen.

AWS CloudFormation-Stack

Wenn Sie einen AWS CloudFormation-Stack verwenden, um die Spark-UI anzuzeigen, stellt eine Amazon Elastic Compute Cloud (Amazon EC2) Instance eine HTTPS-Anfrage, um zu bestätigen, dass die Spark-UI funktioniert. Wenn diese Anfrage fehlschlägt, erhalten Sie den Fehler „waitCondition timed out“. Es wurden 0 Bedingungen empfangen, obwohl 1 erwartet wurde“, und der AWS CloudFormation-Stack wird zurückgesetzt.

Überprüfen Sie Folgendes, um dieses Problem zu beheben:

  • Subnetz: Bestätigen Sie, dass das Subnetz den Amazon Simple Storage Service (Amazon S3) API-Endpunkt erreichen kann. Wenn Sie zum Beispiel ein privates Subnetz verwenden, bestätigen Sie, dass das Subnetz einen VPC-Endpunkt oder ein NAT-Gateway hat.
  • Port des Verlaufsservers: Bestätigen Sie, dass Sie über den Port des Spark-Verlaufsservers auf das Subnetz zugreifen können. Zum Beispiel könnte eine Firewall den Port blockieren.
  • Verzeichnis des Ereignisprotokolls: Vergewissern Sie sich, dass Sie einen gültigen Amazon S3-Pfad für das Ereignisprotokollverzeichnis eingegeben haben. Sie müssen s3a:// für das Pfadschema der Ereignisprotokolle verwenden. Wenn der von Ihnen angegebene Amazon S3-Pfad Ereignisprotokolldateien enthält, ist der Pfad gültig.

Wenn Sie immer noch eine Fehlermeldung erhalten, überprüfen Sie die folgenden Protokollgruppen in Amazon CloudWatch Logs:

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

Hinweis: Die EC2-Instance des Verlaufsservers wird beendet, wenn der CloudFormation-Stack zurückgesetzt wird. Um zu verhindern, dass die Instance beendet wird, aktivieren Sie den Terminierungsschutz für den Stack.

Docker

Wenn Sie Docker verwenden, um die Spark-UI anzuzeigen,und Sie über Ihren Webbrowser keine Verbindung zum Spark-Verlaufsserver herstellen können, überprüfen Sie Folgendes:

  • Vergewissern Sie sich, dass die AWS-Anmeldeinformationen (Zugangsschlüssel und geheimer Schlüssel) gültig sind. Wenn Sie temporäre Anmeldeinformationen verwenden möchten, müssen Sie **** spark.hadoop.fs.s3a.session.token im Befehl verwenden. Beispiel:
$ 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"
  • Vergewissern Sie sich, dass Sie einen gültigen Amazon S3-Pfad für das Ereignisprotokollverzeichnis eingegeben haben. Sie müssen s3a:// für das Pfadschema der Ereignisprotokolle verwenden. Wenn der von Ihnen angegebene Amazon S3-Pfad Ereignisprotokolldateien enthält, ist der Pfad gültig.
  • Vergewissern Sie sich, dass Sie die richtige Portnummer im Browser eingegeben haben. Die Standardportnummer ist 18080 (z. B. http://localhost:18080). Um die Portnummer zu ändern, ändern Sie den Parameter -p im Befehl und denParameter ****spark.history.ui.port in der Dockerdatei.

Wenn Sie die Spark-UI immer noch nicht sehen können, überprüfen Sie die Protokolle. Um die stdout- und stderr-Logs für den Docker-Container zu erhalten, führen Sie docker runmit dem Parameter -it anstelle des Parameters -itd aus. Beispiel:

$ 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"

Verwandte Informationen

Überwachen von Jobs mithilfe der Apache Spark-Web-Benutzeroberfläche

Aktivieren der Apache Spark-Web-UI für AWS Glue-Jobs

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren