Come posso risolvere i problemi di visualizzazione dell'interfaccia utente di Spark per i processi ETL di AWS Glue?

3 minuti di lettura
0

Non riesco a visualizzare l'interfaccia utente di Apache Spark per i lavori ETL di AWS Glue.

Risoluzione

Scegli una delle seguenti soluzioni, a seconda di come accedi a Spark UI con uno stack AWS CloudFormation o con Docker.

Stack AWS CloudFormation

Quando utilizzi uno stack AWS CloudFormation per visualizzare l'interfaccia utente di Spark, un'istanza di Amazon Elastic Compute Cloud (Amazon EC2) invia una richiesta HTTPS per confermare il funzionamento dell'interfaccia utente di Spark. Se la richiesta dà esito negativo, viene visualizzato l'errore "WaitCondition timed out". Ha ricevuto 0 condizioni quando se ne aspettava 1" e lo stack di AWS CloudFormation è stato ripristinato.

Controlla quanto segue per risolvere questo problema:

  • Sottorete: Conferma che la sottorete può raggiungere l'endpoint API di Amazon Simple Storage Service (Amazon S3). Ad esempio, se utilizzi una sottorete privata, verifica che la sottorete abbia un endpoint VPC o un gateway NAT.
  • Porta del server della cronologia: Conferma di poter accedere alla sottorete tramite la porta del server della cronologia Spark. Ad esempio, un firewall potrebbe bloccare la porta.
  • Directory dei log degli eventi: Conferma di aver inserito un percorso Amazon S3 valido per la directory dei log degli eventi. È necessario utilizzare s3a:// per lo schema del percorso dei log degli eventi. Se nel percorso Amazon S3 specificato sono presenti file di log degli eventi, il percorso è valido.

Se il messaggio di errore persiste, controlla i seguenti gruppi di log in Amazon CloudWatch Logs:

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

Nota: L'istanza EC2 del server della cronologia viene terminata quando lo stack CloudFormation esegue il rollback. Per evitare che l'istanza venga interrotta, abilita la protezione dalla terminazione per lo stack.

docker

Se stai usando Docker per visualizzare l'interfaccia utente di Spark e non riesci a connetterti al server della cronologia Spark dal tuo browser web, controlla quanto segue:

  • Verifica che le credenziali AWS (chiave di accesso e chiave segreta) siano valide. Se desideri utilizzare credenziali temporanee, devi usare spark.hadoop.fs.s3a.session.token nel comando. Esempio:
$ 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"
  • Conferma di aver inserito un percorso Amazon S3 valido per la directory dei log degli eventi. È necessario utilizzare s3a:// per lo schema del percorso dei log degli eventi. Se nel percorso Amazon S3 specificato sono presenti file di log degli eventi, il percorso è valido.
  • Conferma di aver inserito il numero di porta corretto nel browser. Per impostazione predefinita, il numero di porta è 18080 (ad esempio http://localhost:18080). Per modificare il numero di porta, modifica il parametro -p nel comando e il parametro spark.history.ui.port nel Dockerfile.

Se ancora non riesci a visualizzare l'interfaccia utente di Spark, controlla i registri. Per ottenere i log stdout e stderr per il contenitore Docker, esegui docker run con il parametro -it anziché il parametro -itd. Esempio:

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

Informazioni correlate

Monitoring jobs using the Apache Spark web UI

Enabling the Apache Spark web UI for AWS Glue jobs

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa