將資料上傳至 Amazon S3 - Amazon EMR

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

將資料上傳至 Amazon S3

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

建立並設定 Amazon S3 儲存貯體

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

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

請參閱下列資源:

注意

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

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

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

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

Amazon EMR支援透過適用於 Java 的 AWS SDKAmazon S3 分段上傳。分段上傳可讓您將單一物件以一組組件進行上傳。您可依任何順序分別上傳這些物件組件。若任何組件的傳輸失敗,您可再次傳輸該組件,而不會影響其他組件。當物件的所有組件都上傳完後,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 Optimized Committer 也停用,則此值也會控制資料檔案可以增長的大小上限,直到 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/emr 開啟 Amazon EMR主控台。

  2. 在左側導覽窗格中的 EMR EC2下,選擇叢集,然後選擇建立叢集

  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金鑰對的名稱取代 。

    注意

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

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.5.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 叢集元件預設會透過適用於 Java 的 AWS SDKAmazon S3 使用分段上傳APIs,將日誌檔案和輸出資料寫入 Amazon S3。如需使用 Amazon 變更與此組態相關屬性的詳細資訊EMR,請參閱 設定適用於 Amazon S3 的分段上傳。上傳大型檔案有時會導致 Amazon S3 分段上傳不完整。當分段上傳無法成功完成時,進行中的分段上傳會持續佔用您的儲存貯體,並會產生儲存費用。建議採取下列選項避免過多檔案儲存:

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

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

管理版本標記

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

效能最佳實務

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