將大量資料上傳到 Amazon S3 時,如何將效能最佳化?

1 分的閱讀內容
0

我正在上傳大量資料到 Amazon Simple Storage Service (Amazon S3),或在 S3 儲存貯體之間複製大量資料。如何將此類資料傳輸的效能最佳化?

解決方法

在 Amazon S3 儲存貯體上進行大量資料傳輸時,不論是輸入或輸出,請考慮下列方法:

使用 AWS Command Line Interface (AWS CLI) 進行平行上傳

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI

若要盡可能縮短完成傳輸所需的整體時間,請將傳輸作業分割為多個互斥的作業。您可以同時執行 aws s3 cp (複製)、aws s3 mv (移動) 或 aws s3 sync (同步) 的多個執行個體。

分割傳輸的一種方法是使用 --exclude 和 --include 參數,依照檔案名稱區分作業。例如,您想要從一個儲存貯體複製大量資料到另一個儲存貯體。在此範例中,所有檔案名稱都以數字開頭。您可以在 AWS CLI 的兩個執行個體上執行下列命令。

注意: --exclude--include 參數是在客戶端處理。因此,本機電腦的資源可能會影響作業效能。

執行此命令來複製名稱開頭為數字 0 到 4 的檔案:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

執行此命令來複製名稱開頭為數字 5 到 9 的檔案:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

**重要事項:**如果您必須傳輸大量物件 (數億個),請考慮使用 AWS SDK 建立自訂應用程式來執行複製。雖然 AWS CLI 可以執行複製,但自訂應用程式在該規模下可能會更有效率。

AWS Snowball

請考慮使用 AWS Snowball 在現場部署資料中心和 Amazon S3 之間進行傳輸,尤其是當資料超過 10 TB 時。

請注意下列限制:

  • AWS Snowball 不支援儲存貯體到儲存貯體的資料傳輸。
  • AWS Snowball 不支援使用 AWS Key Management System (AWS KMS) 管理的金鑰進行伺服器端加密。如需詳細資訊,請參閱 AWS Snowball 中的加密

S3DistCp 搭配 Amazon EMR

請考慮使用 S3DistCp 搭配 Amazon EMR,在 Amazon S3 儲存貯體之間複製資料。S3DistCp 能夠平行複製大量物件。

重要事項: 由於此選項需要您啟動 Amazon EMR 叢集,因此請務必檢閱 Amazon EMR 定價


相關資訊

請求率和效能準則

AWS 官方
AWS 官方已更新 1 年前