如何為檢視 AWS Glue ETL 任務 Spark UI 時發生的問題進行疑難排解?

2 分的閱讀內容
0

我看不到 AWS Glue ETL 任務的 Apache Spark UI。

解決方案

根據您使用 AWS CloudFormation 堆疊或 Docker 存取 Spark UI 的方式,選擇下列其中一種解決方法。

AWS CloudFormation 堆疊

當您使用 AWS CloudFormation 堆疊檢視 Spark UI 時,Amazon Elastic Compute Cloud (Amazon EC2) 執行個體會發出 HTTPS 請求,以確認 Spark UI 是否正常運作。如果該請求失敗,則會收到錯誤「WaitCondition timed out.Received 0 conditions when expecting 1 (WaitCondition 逾時。預期為 1 個卻收到 0 個條件)」,且 AWS CloudFormation 堆疊已復原。

檢查下列項目以解決此問題:

  • 子網路: 確認子網路可以連線到 Amazon Simple Storage Service (Amazon S3) API 端點。例如,如果您使用私有子網路,請確認子網路具有 VPC 端點或 NAT 閘道。
  • 歷史記錄伺服器連接埠: 確認您可以透過 Spark 歷史記錄伺服器連接埠存取子網路。例如,防火牆可能封鎖連接埠。
  • 事件日誌目錄: 確認您為事件日誌目錄輸入有效的 Amazon S3 路徑。您必須使用 ** s3a://**作為事件記錄路徑配置。如果您指定的 Amazon S3 路徑中有事件日誌檔案,則該路徑有效。

如果仍然獲得錯誤訊息,請在 Amazon CloudWatch Logs 中檢查下列日誌群組:

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

**注意:**歷史記錄伺服器 EC2 執行個體會在 CloudFormation 堆疊復原時終止。若要防止執行個體終止,e請為堆疊啟用終止保護

Docker

如果您使用 Docker 檢視 Spark UI,並且無法從 Web 瀏覽器連接到 Spark 歷史記錄伺服器,請檢查以下內容:

  • 確認 AWS 憑證 (存取金鑰和秘密金鑰) 有效。若您想使用臨時憑證,請在命令中使用 spark.hadoop.fs.s3a.session.token。範例:
$ 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"
  • 確認您為事件日誌目錄輸入有效的 Amazon S3 路徑。您必須使用 ** s3a://**作為事件記錄路徑配置。如果您指定的 Amazon S3 路徑中有事件日誌檔案,則該路徑有效。
  • 確認您在瀏覽器中輸入正確的連接埠號碼。根據預設,連接埠號碼為 18080 (例如,http://localhost:18080)。若要變更連接埠號碼,請變更命令中的 -p ** 參數以及 Dockerfile 中的 ** Spark.history.ui.port 參數。

如果您仍然無法檢視 Spark UI,請檢查日誌。若要獲取 Docker 容器的 stdout 和 stderr 記錄,請使用 -it 參數而不是 -itd 參數執行 docker run 。範例:

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

相關資訊

使用 Apache Spark Web UI 監控任務

啟用 AWS Glue 任務的 Apache Spark Web UI

AWS 官方
AWS 官方已更新 3 年前