啟動 Spark 歷史記錄伺服器 - AWS Glue

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

啟動 Spark 歷史記錄伺服器

可使用 Spark 歷史記錄伺服器,在您自己的基礎設施中視覺化 Spark 日誌。對於 AWS Glue 4.0 或更新版本中的 AWS Glue 任務執行 (其中包含以標準 (而非舊版) 格式產生的日誌),您可以在 AWS Glue 主控台中看到相同的視覺效果。如需更多詳細資訊,請參閱 使用 Apache Spark web UI 監控任務

您可以使用在 EC2 執行個體上託管伺服器的 AWS CloudFormation 範本啟動 Spark 歷史記錄伺服器,或使用 Docker 在本機啟動。

啟動 Spark 歷史記錄伺服器並使用 AWS CloudFormation 檢視 Spark UI

您可以使用 AWS CloudFormation 範本來啟動 Apache Spark 歷史記錄伺服器並檢視 Spark Web UI。這些範本是範例,您應加以修改以符合您的需求。

啟動 Spark 歷史記錄伺服器並使用 AWS CloudFormation 檢視 Spark UI
  1. 選擇下表中的其中一個 Launch Stack (啟動堆疊) 按鈕。這會在 AWS CloudFormation 主控台上啟動堆疊。

    區域 啟動
    美國東部 (俄亥俄) Orange button labeled "Launch Stack" with an arrow icon.
    美國東部 (維吉尼亞北部) Orange button labeled "Launch Stack" with an arrow icon.
    美國西部 (加利佛尼亞北部) Orange button labeled "Launch Stack" with an arrow icon.
    美國西部 (奧勒岡) Orange button labeled "Launch Stack" with an arrow icon.
    非洲 (開普敦) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (香港) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (孟買) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (大阪) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (首爾) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (新加坡) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (雪梨) Orange button labeled "Launch Stack" with an arrow icon.
    亞太區域 (東京) Orange button labeled "Launch Stack" with an arrow icon.
    加拿大 (中部) Orange button labeled "Launch Stack" with an arrow icon.
    歐洲 (法蘭克福) Orange button labeled "Launch Stack" with an arrow icon.
    歐洲 (愛爾蘭) Orange button labeled "Launch Stack" with an arrow icon.
    歐洲 (倫敦) Orange button labeled "Launch Stack" with an arrow icon.
    Europe (Milan) Orange button labeled "Launch Stack" with an arrow icon.
    歐洲 (巴黎) Orange button labeled "Launch Stack" with an arrow icon.
    歐洲 (斯德哥爾摩) Orange button labeled "Launch Stack" with an arrow icon.
    中東 (巴林) Orange button labeled "Launch Stack" with an arrow icon.
    南美洲 (聖保羅) Orange button labeled "Launch Stack" with an arrow icon.
  2. Specify template (指定範本) 頁面上,選擇 Next (下一步)

  3. Specify stack details (指定堆疊詳細資訊) 頁面上,輸入 Stack name (堆疊名稱)。在 Parameters (參數) 下輸入其他資訊。

    1. Spark UI 組態

      請提供下列資訊:

      • IP address range (IP 地址範圍) - 可用於檢視 Spark UI 的 IP 地址範圍。如果您想要限制來自特定 IP 地址範圍的存取,您應該使用自訂值。

      • History server port (歷史記錄伺服器連接埠) - Spark UI 的連接埠。您可以使用預設值。

      • Event log directory (事件日誌目錄) - 選擇從 AWS Glue 任務或開發端點存放 Spark 事件日誌的位置。您必須使用 s3a:// 做為事件日誌路徑配置。

      • Spark package location (Spark 套件位置) - 您可以使用預設值。

      • Keystore path (金鑰存放區路徑) - HTTPS 的 SSL/TLS 金鑰存放區路徑。如果您要使用自訂金鑰存放區檔案,可以在此指定 S3 路徑 s3://path_to_your_keystore_file。如果您將此參數保留空白,將會產生並使用以自我簽署憑證為基礎的金鑰存放區。

      • Keystore password (金鑰存放區密碼) – 輸入 HTTPS 的 SSL/TLS 金鑰存放區密碼。

    2. EC2 執行個體組態

      請提供下列資訊:

      • Instance type (執行個體類型) - 託管 Spark 歷史記錄伺服器的 Amazon EC2 執行個體類型。由於此範本啟動您帳戶中的 Amazon EC2 執行個體,因此會另外向您的帳戶收取 Amazon EC2 費用。

      • Latest AMI ID (最新的 AMI ID) - Spark 歷史記錄伺服器執行個體之 Amazon Linux 2 的 AMI ID。您可以使用預設值。

      • VPC ID - Spark 歷史記錄伺服器執行個體的 Virtual Private Cloud (VPC) ID。您可以使用您帳戶中可用的任何 VPC,不建議使用預設 VPC 搭配預設網路 ACL。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的預設 VPC 和預設子網路以及建立 VPC

      • Subnet ID (子網路 ID) - Spark 歷史記錄伺服器執行個體的 ID。您可以使用 VPC 中的任何子網路。您必須能夠從用戶端連線到網路以連接至子網路。如果您要透過網際網路存取,必須使用在路由表中具有網際網路閘道的公有子網路。

    3. 選擇 Next (下一步)

  4. Configure stack options (設定堆疊選項) 頁面上,若要使用目前使用者憑證來決定 CloudFormation 如何在堆疊中建立、修改或刪除資源,請選擇 Next (下一步)。您也可以在許可區段指定一個角色,而非使用目前使用者的許可,然後選擇下一步

  5. Review (檢閱) 頁面上檢閱範本。

    選擇 I acknowledge that AWS CloudFormation might create IAM resources (我知道 AWS CloudFormation 可能會建立 IAM 資源),然後選擇 Create stack (建立堆疊)

  6. 等待堆疊建立。

  7. 開啟 Outputs (輸出) 標籤。

    1. 如果您使用公有子網路,請複製 SparkUiPublicUrl 的 URL。

    2. 如果您使用私有子網路 , 請複製 SparkUiPrivateUrl 的 URL。

  8. 開啟 Web 瀏覽器,然後貼入該 URL。這可讓您使用 HTTPS 在指定連接埠上存取伺服器。您的瀏覽器可能會無法辨識伺服器的憑證,在此情況下,您必須覆寫其保護並繼續。

啟動 Spark 歷史記錄伺服器並使用 Docker 檢視 Spark UI

如果您偏好本機存取 (不使用 EC2 執行個體做為 Apache Spark 歷史記錄伺服器),您也可以使用 Docker 來啟動 Apache Spark 歷史記錄伺服器,並在本機檢視 Spark UI。此 Dockerfile 為範例,您應該修改以符合您的需求。

先決條件

如需有關如何在筆記型電腦上安裝 Docker 的資訊,請參閱 Docker 引擎社群

啟動 Spark 歷史記錄伺服器並使用 Docker 在本機檢視 Spark UI
  1. 從 GitHub 下載檔案。

    AWS Glue 程式碼範例下載 Dockerfile 和 pom.xml

  2. 決定是否要使用您的使用者憑證或聯合身分使用者憑證來存取 AWS。

    • 若要使用目前的使用者憑證來存取 AWS,取得用於 docker run 命令中 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 的值。如需詳細資訊,請參閱《IAM 使用者指南》中的管理 IAM 使用者的存取金鑰

    • 若要使用 SAML 2.0 聯合身分使用者來存取 AWS,請取得 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN 的值。如需詳細資訊,請參閱請求暫時安全憑證

  3. 判斷您的事件日誌目錄的位置,以在 docker run 命令中使用。

  4. 使用本機目錄中的檔案建置 Docker 映像檔,對其使用名稱 glue/sparkui 以及標籤 latest

    $ docker build -t glue/sparkui:latest .
  5. 建立並啟動 Docker 容器。

    在下列命令中,使用先前在步驟 2 與 3 中取得的值。

    1. 若要使用您的使用者憑證建立 Docker 容器,請使用類似如下的命令。

      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" -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
    2. 要使用暫時憑證建立 Docker 容器,請使用 org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider 做為提供者,並提供在步驟 2 中取得的憑證值。如需詳細資訊,請參閱 Hadoop:與 Amazon Web Services 整合文件中的將工作階段憑證與 TemporaryAWSCredentialsProvider 搭配使用

      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=AWS_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"
    注意

    這些組態參數來自 Hadoop-AWS 模組。您可能需要根據您的使用案例來新增具體的組態。例如:隔離區域中的使用者需要設定 spark.hadoop.fs.s3a.endpoint

  6. 在瀏覽器中開啟 http://localhost:18080 以在本機檢視 Spark UI。