Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Perché non riesco a visualizzare l'interfaccia utente di Spark per i processi ETL di AWS Glue?
Quando utilizzo un modello AWS CloudFormation o Docker localmente, non riesco a vedere l'interfaccia utente di Apache Spark per i processi ETL di AWS Glue.
Risoluzione
Esegui i passaggi di risoluzione descritti di seguito in base alla modalità di accesso all'interfaccia utente di Spark.
Stack CloudFormation
Quando utilizzi uno stack CloudFormation per visualizzare l'interfaccia utente di Spark, un'istanza Amazon Elastic Compute Cloud (Amazon EC2) effettua una richiesta HTTPS. La richiesta verifica se l'interfaccia utente di Spark funziona. Se la richiesta ha esito negativo, ricevi il seguente errore:
"WaitCondition timed out. Received 0 conditions when expecting 1,"
Dopo l'errore, CloudFormation ripristina lo stack.
Per risolvere il problema, intraprendi le seguenti azioni:
- Verifica che la sottorete possa 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 (Virtual Private Cloud) o un gateway NAT.
- Verifica di poter accedere alla sottorete tramite la porta del server della cronologia Spark. Ad esempio, un firewall potrebbe bloccare la porta e causare l'errore precedente.
- Verifica di aver inserito un percorso Amazon S3 valido per la directory dei log degli eventi. Devi utilizzare s3a:// per lo schema del percorso dei log degli eventi.
Nota: se nel percorso Amazon S3 specificato sono presenti file di log degli eventi, il percorso è valido.
Se il messaggio di errore persiste, verifica ulteriori dettagli nei seguenti gruppi di log in Amazon CloudWatch Logs:
- /aws-glue/sparkui_cfn/cfn-init.log
- /aws-glue/sparkui_cfn/spark_history_server.log
Nota: CloudFormation termina l'istanza EC2 del server di cronologia quando lo stack esegue il rollback. Per non terminare l'istanza, attiva la protezione da terminazione per lo stack.
Docker
Se utilizzi Docker per visualizzare l'interfaccia utente di Spark e non riesci a connetterti al server della cronologia Spark dal browser, controlla le seguenti configurazioni:
-
Verifica che le credenziali AWS della chiave di accesso e della chiave segreta siano valide. Per utilizzare credenziali temporanee, devi utilizzare spark.hadoop.fs.s3a.session.token nel comando. Esempio di comando:
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"Nota: sostituisci AWS_ACCESS_KEY_ID con l'ID della tua chiave, AWS_SECRET_ACCESS_KEY con la tua chiave di accesso segreta e SESSION_TOKEN con il tuo token di sessione.
-
Verifica di aver inserito un percorso Amazon S3 valido per la directory dei log degli eventi. Devi utilizzare s3a:// per lo schema del percorso dei log degli eventi.
Nota: se nel percorso Amazon S3 specificato sono presenti file di log degli eventi, il percorso è valido. -
Verifica di aver inserito il numero di porta corretto nel browser. Per modificare il numero di porta, modifica il parametro**-p** nel comando docker run e il parametro spark.history.ui.port nel Dockerfile.
Nota: per impostazione predefinita, il numero di porta è 18080. Esempio di porta: http://localhost:18080.
Se non riesci ancora a visualizzare l'interfaccia utente di Spark, consulta i log per ulteriori dettagli. Per ottenere i log stdout e stderr per il contenitore Docker, esegui docker run con il parametro -it anziché con il parametro -itd. Esempio di comando:
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"
Nota: sostituisci AWS_ACCESS_KEY_ID con l'ID della tua chiave, AWS_SECRET_ACCESS_KEY con la tua chiave di accesso segreta e SESSION_TOKEN con il tuo token di sessione.
Informazioni correlate
Monitoraggio dei processi tramite l'interfaccia utente Web di Apache Spark
Abilitazione dell'interfaccia utente web di Apache Spark per i processi di AWS Glue
