本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將資料上傳至 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 S3 使用者指南》中的建立儲存貯體。
-
若要使用 建立和使用儲存貯體 AWS CLI,請參閱《Amazon S3 使用者指南》中的使用高階 S3 命令搭配 AWS Command Line Interface 。 Amazon S3
-
若要使用 建立儲存貯體SDK,請參閱《Amazon Simple Storage Service 使用者指南》中的建立儲存貯體的範例。
-
若要使用 curl 搭配儲存貯體,請參閱 curl 的 Amazon S3 身分驗證工具
。 -
如需有關指定區域特定儲存貯體的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的存取儲存貯體。
-
若要使用 Amazon S3 Access Points 搭配儲存貯體,請參閱《Amazon S3 使用者指南》中的為您的存取點使用儲存貯體型別名。您可以輕鬆地將 Amazon S3 Access Points 與 Amazon S3 Access Point 別名搭配使用,而不是使用 Amazon S3 儲存貯體名稱。您可以將 Amazon S3 Access Point 別名同時用於現有的和新的應用程式,包括 Spark、Hive、Presto 和其他應用程式。
注意
如果您啟用儲存貯體的記錄,則只會啟用儲存貯體存取日誌,而不是 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開始新分段上傳之前,以位元組為單位的分段大小上限。最小值為 如果停用EMRFS用戶端加密,且 Amazon S3 Optimized Committer 也停用,則此值也會控制資料檔案可以增長的大小上限,直到 EMRFS使用分段上傳,而不是上傳檔案的 |
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 分鐘固定延遲的整數類型。 |
停用分段上傳
最佳實務
以下是搭配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 使用者指南》中的請求率與效能考量。