本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
存儲星火隨機播放數據
隨機排序是每當資料分割區之間重新排列 Spark 任務的重要步驟。這是必需的,因為諸如 join
、
groupByKey
、reduceByKey
以及 repartition
等廣泛轉換需要來自其他分割區的資訊才能完成處理。Spark 會從每個分割區收集所需的資料,並將其結合成一個新的分割區。在隨機排序期間,資料會寫入磁碟並透過網路傳輸。因此,隨機排序操作與本機磁碟容量密切相關。當執行器沒有足夠的磁碟空間並且沒有復原時,Spark 擲出 No space left on device
或
MetadataFetchFailedException
錯誤。
注意
AWS Glue Amazon S3 的星火隨機播放插件僅支持 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工作中使用 Cloud 隨機存儲插件,您需要以下內容:
-
與任務執行位於相同區域的 Amazon S3 儲存貯體,用於存放中繼隨機排序和溢出的資料。您可以使用
--conf spark.shuffle.glue.s3ShuffleBucket=s3://
指定隨機排序儲存的 Amazon S3 字首,如下列範例所示:shuffle-bucket
/prefix
/--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 的 out-of-the 盒子支持,並且還可以很容易地配置為使用其他形式的雲存儲,如谷歌雲存儲和 Microsoft Azure Blob 存儲
備註與限制
以下是 AWS Glue 隨機排序管理器的備註或限制:
-
AWS Glue 任務完成後,隨機播放管理員不會自動刪除存放在 Amazon S3 儲存貯體中的 (暫時) 隨機播放資料檔案。若要確保資料保護,請在啟用雲端隨機排序儲存外掛程式之前遵循 使用雲端隨機排序儲存外掛程式的先決條件 中的說明進行操作。
-
如果資料偏斜,您可以使用此功能。