Como posso solucionar problemas com a visualização da interface do usuário do Spark para trabalhos de ETL do AWS Glue?

3 minuto de leitura
0

Não consigo ver a interface do usuário do Apache Spark para trabalhos de ETL do AWS Glue.

Resolução

Escolha uma das soluções a seguir, dependendo de como você está acessando a interface do usuário do Spark com uma pilha do AWS CloudFormation ou com o Docker.

Pilha do AWS CloudFormation

Quando você usa uma pilha do AWS CloudFormation para visualizar a interface do usuário do Spark, uma instância do Amazon Elastic Compute Cloud (Amazon EC2) faz uma solicitação HTTPS para confirmar que a interface do usuário do Spark está funcionando. Se essa solicitação falhar, você receberá o erro “WaitCondition expirado. Recebeu 0 condições quando esperava 1”, e a pilha do AWS CloudFormation será revertida.

Verifique o seguinte para resolver esse problema:

  • Sub-rede: confirme se a sub-rede pode alcançar o endpoint da API do Amazon Simple Storage Service (Amazon S3). Por exemplo, se você estiver usando uma sub-rede privada, confirme se a sub-rede tem um endpoint da VPC ou um gateway NAT.
  • Porta do servidor de histórico: confirme se você pode acessar a sub-rede pela porta do servidor de histórico do Spark. Por exemplo, um firewall pode estar bloqueando a porta.
  • Diretório de log de eventos: confirme se você inseriu um caminho válido do Amazon S3 para o diretório do log de eventos. Você deve usar s3a:// para o esquema de caminho dos logs de eventos. Se houver arquivos de log de eventos no caminho do Amazon S3 especificado, o caminho será válido.

Se você ainda receber um erro, verifique os seguintes grupos de logs no Amazon CloudWatch Logs:

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

Observação: a instância do EC2 do servidor de histórico é encerrada quando a pilha do CloudFormation é revertida. Para evitar que a instância seja encerrada, ative a proteção contra encerramento para a pilha.

Docker

Se você estiver usando o Docker para visualizar a interface do usuário do Spark e não conseguir se conectar ao servidor de histórico do Spark usando seu navegador, verifique o seguinte:

  • Confirme se as credenciais da AWS (chave de acesso e chave secreta) são válidas. Se quiser utilizar credenciais temporárias, use spark.hadoop.fs.s3a.session.token no comando. Exemplo:
$ 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"
  • Confirme se você inseriu um caminho válido do Amazon S3 para o diretório do log de eventos. Você deve usar s3a:// para o esquema de caminho dos logs de eventos. Se houver arquivos de log de eventos no caminho do Amazon S3 especificado, o caminho será válido.
  • Confirme se você inseriu o número da porta correto no navegador. Por padrão, o número da porta é 18080 (por exemplo, http://localhost:18080). Para alterar o número da porta, altere o parâmetro -p no comando e o parâmetro spark.history.ui.port no Dockerfile.

Se você ainda não conseguir visualizar a interface do usuário do Spark, verifique os logs. Para obter os logs stdout e stderr para o contêiner do Docker, execute docker run com o parâmetro -it em vez do parâmetro -itd. Exemplo:

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

Informações relacionadas

Monitorar trabalhos usando a interface do usuário da Web do Apache Spark

Habilitar a interface do usuário da Web do Apache Spark para trabalhos do AWS Glue

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos