Wie kann ich Probleme mit der Anzeige der Spark-UI für AWS Glue ETL-Jobs beheben?
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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 4 Jahren
- AWS OFFICIALAktualisiert vor 4 Monaten
- AWS OFFICIALAktualisiert vor 3 Monaten