將資料上傳至 Amazon S3 - Amazon EMR

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

將資料上傳至 Amazon S3

如需有關如何將物件上傳至 Amazon S3 的資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的將物件新增至儲存貯體。如需有關將 Amazon S3 與 Hadoop 搭配使用的詳細資訊,請參閱 http://wiki.apache.org/hadoop/AmazonS3

建立並設定 Amazon S3 儲存貯體

Amazon EMR 使用 AWS SDK for Java 與 Amazon S3 來存儲輸入數據,日誌文件和輸出數據。Amazon S3 將這些儲存位置視為儲存貯體。儲存貯體有一定的限制和限制,以符合 Amazon S3 和DNS要求。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的儲存貯體限制與局限

本節說明如何使用 Amazon S3 AWS Management Console 建立 Amazon S3 儲存貯體,然後設定許可。您也可以使用 Amazon S3 或為 Amazon S3 儲存貯體建立和設定許API可 AWS CLI。您也可以搭配修改來使用 curl,將適合的身分驗證參數傳遞到 Amazon S3。

請參閱下列資源:

注意

如果您啟用儲存貯體的記錄功能,它只會啟用儲存貯體存取日誌,而不會啟用 Amazon EMR 叢集日誌。

在儲存貯體建立期間或之後,您可以根據您的應用程式來設定存取儲存貯體的適當權限。通常,您會授予讀取、寫入權限給您自己 (擁有者) ,而將讀取權限授予給已驗證的使用者。

所需的 Amazon S3 儲存貯體必須先存在,您才能夠建立叢集。您必須將所需指令碼和叢集中參考的資料上傳至 Amazon S3。下表說明了資料、指令碼和日誌檔案位置的範例。

設定適用於 Amazon S3 的分段上傳

Amazon EMR 支持 Amazon S3 通過 Java 的 AWS SDK多部分上傳。分段上傳可讓您將單一物件以一組組件進行上傳。您可依任何順序分別上傳這些物件組件。若任何組件的傳輸失敗,您可再次傳輸該組件,而不會影響其他組件。當物件的所有組件都上傳完後,Amazon S3 會將這些組件組合起來建立該物件。

如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的分段上傳概觀

此外,Amazon EMR 提供的屬性可讓您更精確地控制失敗的多部分上傳部件的清理。

下表說明多部分上傳的 Amazon EMR 組態屬性。您可以使用 core-site 組態分類來設定這些屬性。如需詳細資訊,請參閱 Amazon EMR 版本指南中的設定應用程式

組態參數名稱 預設值 描述
fs.s3n.multipart.uploads.enabled true 布林值類型,用以指示是否啟用分段上傳。啟用EMRFS一致檢視時,依預設會啟用多部分上傳,並將此值設false為忽略。
fs.s3n.multipart.uploads.split.size 134217728

指定啟用多部分上載時,在EMRFS開始新零件上傳之前,零件的大小上限 (以位元組為單位)。最小值為 5242880 (5 MB)。如果已指定較小的值,會使用 5242880。上限為 5368709120 (5 GB)。如果已指定較大的值,會使用 5368709120

如果停用用EMRFS戶端加密且 Amazon S3 優化提交器也停用,此值也會控制資料檔案在EMRFS使用多部分上傳 (而不是上傳檔案的PutObject請求) 之前可以增長的大小上限。如需詳細資訊,請參閱

fs.s3n.ssl.enabled true 布林值類型,用以指示使用 http 或 https。
fs.s3.buckets.create.enabled false 布林值類型,用以指示是否要在儲存貯體不存在的情況下建立儲存貯體。設定為 false 會導致 CreateBucket 操作發生例外狀況。
fs.s3.multipart.clean.enabled false 指示對於不完整的分段上傳是否啟用背景定期清除的布林值類型。
fs.s3.multipart.clean.age.threshold 604800 指定考慮清除之前分段上傳存留期下限 (秒數) 的長類型。預設為一週。
fs.s3.multipart.clean.jitter.max 10000 指定在排定的下次清除之前將隨機抖動延遲上限 (秒數) 新增到 15 分鐘固定延遲的整數類型。

停用分段上傳

Console
使用主控台停用分段上傳
  1. 登入 AWS Management Console,並在 https://console.aws.amazon.com/em r 開啟 Amazon EMR 主控台。

  2. EC2在左側導覽窗格的 [開EMR啟] 下,選擇 [集],然後選擇 [建立叢集]。

  3. 軟體設定下,輸入下列組態:classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]

  4. 選擇適用於您的叢集的任何其他選項。

  5. 若要啟動您的叢集,請選擇建立叢集

CLI
若要使用停用多部分上傳 AWS CLI

此程序說明如何使用 AWS CLI停用分段上傳。若要停用分段上傳,請輸入含 create-cluster 參數的 --bootstrap-actions 命令。

  1. 建立有下列內容的檔案 myConfig.json,並將該檔案儲存在您執行命令的同一個目錄中:

    [ { "Classification": "core-site", "Properties": { "fs.s3n.multipart.uploads.enabled": "false" } } ]
  2. 鍵入以下命令並替換 myKey 使用您的 EC2 key pair 的名稱。

    注意

    包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.2.0 --applications Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --configurations file://myConfig.json
API
若要使用停用多部分上傳 API

最佳實務

以下是搭配EMR叢集使用 Amazon S3 儲存貯體的建議。

啟用版本控制

版本控制是適用於您 Amazon S3 儲存貯體的建議組態。您可透過啟用版本控制,確保資料不小心刪除或覆寫時,仍可復原。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用版本控制

清除失敗的分段上傳

EMR預設情況下 AWS SDK,叢集元件使用透過 Java 與 Amazon S3 進行的多部分上傳,APIs將日誌檔案寫入並將資料輸出到 Amazon S3。如需使用 Amazon 變更與此組態相關屬性的詳細資訊EMR,請參閱設定適用於 Amazon S3 的分段上傳。上傳大型檔案有時會導致 Amazon S3 分段上傳不完整。當分段上傳無法成功完成時,進行中的分段上傳會持續佔用您的儲存貯體,並會產生儲存費用。建議採取下列選項避免過多檔案儲存:

  • 對於搭配 Amazon 使用的儲存貯體EMR,請在 Amazon S3 中使用生命週期組態規則,在上傳啟動日期後三天移除不完整的多部分上傳。生命週期組態規則可讓您控制物件的儲存類別和生命週期。如需詳細資訊,請參閱物件生命週期管理使用儲存貯體生命週期政策來中止不完整的分段上傳

  • 透過設定true並調整其他清理參數,fs.s3.multipart.clean.enabled以啟用 Amazon EMR 的多部分清理功能。對於大量、大規模,以及運作時間有限的叢集。此功能相當實用。在這種情況下,生命週期組態規則的 DaysAfterIntitiation 參數可能過長,即使設定為最低,仍會導致 Amazon S3 儲存中出現峰值。Amazon EMR 的多部分清理允許更精確的控制。如需詳細資訊,請參閱設定適用於 Amazon S3 的分段上傳

管理版本標記

我們建議您在 Amazon S3 中啟用生命週期組態規則,以移除與 Amazon 搭配使用的版本控制儲存貯體的過期物件刪除標記。EMR在版本控制的儲存貯體中刪除物件時,即會建立一個刪除標記。如果物件的舊版本於後續過期,則會留下儲存貯體中的過期物件刪除標記。雖然刪除標記不會向您收取費用,但移除過期的標記可以改善LIST要求的效能。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的具有版本控制的儲存貯體的生命週期組態

效能最佳實務

視您的工作負載而定,這些叢集上特定類型的EMR叢集和應用程式使用可能會對儲存貯體產生大量要求。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的請求率與效能考量