AWS Glue Spark 隨機排序外掛程式與 Amazon S3 - AWS Glue

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

AWS Glue Spark 隨機排序外掛程式與 Amazon S3

隨機排序是每當資料分割區之間重新排列 Spark 任務的重要步驟。這是必需的,因為諸如 join groupByKeyreduceByKey 以及 repartition 等廣泛轉換需要來自其他分割區的資訊才能完成處理。Spark 會從每個分割區收集所需的資料,並將其結合成一個新的分割區。在隨機排序期間,資料會寫入磁碟並透過網路傳輸。因此,隨機排序操作與本機磁碟容量密切相關。當執行器沒有足夠的磁碟空間並且沒有復原時,Spark 擲出 No space left on device MetadataFetchFailedException 錯誤。

注意

搭配 Amazon S3 的 AWS Glue Spark 隨機排序外掛程式僅對於 AWS Glue ETL 任務受支援。

解決方案

透過 AWS Glue,您現在可以使用 Amazon S3 來存放 Spark 隨機排序資料。Amazon S3 是一項物件儲存服務,提供領先業界的可擴展性、資料可用性、安全性和效能。此解決方案可為您的 Spark 任務分解運算和儲存,並提供完整的彈性和低成本的隨機排序儲存,讓您可靠地執行最密集的隨機排序工作負載。

我們正推出新的 Apache Spark 雲端隨機排序儲存外掛程式,以便您有效地使用 Amazon S3。如果已知任務受到大型隨機操作的本機磁碟容量限制,您可以開啟 Amazon S3 隨機排序來可靠地執行您的 AWS Glue 任務,而不會失敗。在某些情況下,如果您有大量的小分割區或隨機排序檔案已寫入 Amazon S3,則隨機排序到 Amazon S3 會比本機磁碟 (或 EBS) 稍慢一些。

使用雲端隨機排序儲存外掛程式的先決條件

若要將雲端隨機排序儲存外掛程式與 AWS Glue ETL 任務搭配使用,您需要下列項目:

  • 與任務執行位於相同區域的 Amazon S3 儲存貯體,用於存放中繼隨機排序和溢出的資料。您可以使用 --conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/ 指定隨機排序儲存的 Amazon S3 字首,如下列範例所示:

    --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  • 字首上設定 Amazon S3 儲存生命週期政策 (如 glue-shuffle-data),因為隨機排序管理器在任務完成後不會清除檔案。任務完成後,應刪除中繼隨機排序和溢出的資料。使用者可以在字首上設定簡短的生命週期政策。如需設定 Amazon S3 生命週期政策的說明,請參閱《Amazon Simple Storage Service 使用者指南》中的設定儲存貯體的生命週期組態

使用 AWS 主控台的 AWS Glue Spark 隨機排序管理器

若要在設定任務時,使用 AWS Glue 主控台或 AWS Glue Studio 設定 AWS Glue Spark 隨機排序管理器:選擇 --write-shuffle-files-to-s3 任務參數以開啟該任務的 Amazon S3 隨機排序。

使用 AWS Glue Spark 隨機排序外掛程式

下列任務參數會開啟並微調 AWS Glue 隨機排序管理器。這些參數是旗標,因此不會考慮提供的任何值。

  • --write-shuffle-files-to-s3:主要旗標,啟用 AWS Glue Spark 隨機排序管理器以使用 Amazon S3 儲存貯體來寫入和讀取隨機排序資料。當未指定旗標時不使用隨機排序管理器。

  • --write-shuffle-spills-to-s3 – (僅對 AWS Glue 2.0 版本提供支援)。此為選用旗標,可讓您將溢出檔案卸載到 Amazon S3 儲存貯體,這可為 Spark 任務提供額外的彈性。只有將大量資料溢出到磁碟的大型工作負載才需要它。如果未指定旗標,則不會寫入中繼溢出檔案。

  • --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket> — 另一個可選標記,它指定您在其中寫入隨機排序檔案的 Amazon S3 儲存貯體。依預設,--TempDir/隨機排序資料。AWS Glue 3.0+ 支援透過使用逗號分隔符號指定儲存貯體,將隨機排序檔案寫入多個儲存貯體,如 --conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/ 中所示。使用多個儲存貯體可改善效能。

您需要提供安全組態設定,才能為隨機資料啟用靜態加密。如需安全組態的詳細資訊,請參閱 設定 AWS Glue 中的加密。AWS Glue 支援 Spark 提供的所有其他隨機顯示相關組態。

雲端隨機排序儲存外掛程式的軟體二進位檔

您也可以依據 Apache 2.0 許可證下載 Apache Spark 雲端隨機排序儲存外掛程式的軟體二進位檔,並在任何 Spark 環境中執行該二進位檔。這個新的外掛程式隨附對 Amazon S3 的立即支援,也可以輕鬆設定為使用其他形式的雲端儲存,例如 Google Cloud Storage 和 Microsoft Azure Blob 儲存體。如需詳細資訊,請參閱 Apache Spark 雲端隨機排序儲存外掛程式

備註與限制

以下是 AWS Glue 隨機排序管理器的備註或限制:

  • 任務完成後,AWS Glue 隨機排序管理員不會自動刪除存放在 Amazon S3 儲存貯體中的 (暫時) 隨機排序資料檔案。若要確保資料保護,請在啟用雲端隨機排序儲存外掛程式之前遵循 使用雲端隨機排序儲存外掛程式的先決條件 中的說明進行操作。

  • 如果資料偏斜,您可以使用此功能。