Come posso risolvere i problemi di visualizzazione dell'interfaccia utente di Spark per i processi ETL di AWS Glue?
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
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa