使用 EMR Serverless 將資料取得至 S3 Express One Zone - Amazon EMR

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

使用 EMR Serverless 將資料取得至 S3 Express One Zone

使用 Amazon EMR 7.2.0 及更高版本時,請將 EMR Serverless 與 Amazon S3 Express One Zone 儲存類別搭配使用,以便在執行任務和工作負載時提升效能。S3 Express One Zone 是一種高效能的單區域 Amazon S3 儲存類別,可為對大多數延遲敏感的應用程式提供一致的單一位數毫秒資料存取。在發布時,S3 Express One Zone 提供 Amazon S3 中最低延遲和最高效能的雲端物件儲存。

先決條件

  • S3 Express One Zone 許可 – 當 S3 Express One Zone 最初在 S3 物件PUT上執行 GETLIST或 等動作時,儲存類別CreateSession會代表您呼叫 。您的 IAM 政策必須允許 s3express:CreateSession 許可,S3A 連接器才能調用 CreateSession API。如需具有此許可的範例政策,請參閱 開始使用 S3 Express One Zone

  • S3A 連接器 – 若要設定 Spark 從使用 Amazon S3 S3 儲存貯體存取資料,請使用 Apache Hadoop 連接器 S3A。若要使用該連接器,請確保所有 S3 URI 均使用 s3a 結構描述。如果沒有,請變更您用於 s3s3n結構描述的檔案系統實作。

若要變更 s3 結構描述,請指定下列叢集組態:

[ { "Classification": "core-site", "Properties": { "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

若要變更 s3n 結構描述,請指定下列叢集組態:

[ { "Classification": "core-site", "Properties": { "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

開始使用 S3 Express One Zone

請依照下列步驟開始使用 S3 Express One Zone。

  1. 建立 VPC 端點。將端點 com.amazonaws.us-west-2.s3express新增至 VPC 端點。

  2. 遵循 Amazon EMR Serverless 入門,使用 Amazon EMR 發行標籤 7.2.0 或更高版本建立應用程式。

  3. 將應用程式設定為使用新建立的 VPC 端點、私有子網路群組和安全群組。

  4. CreateSession 許可新增至您的任務執行角色。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": [ "*" ], "Action": [ "s3express:CreateSession" ], "Sid": "AllowS3EXPRESSCreatesession" } ] }
  5. 執行您的任務。請注意,使用 S3A配置來存取 S3 Express One Zone 儲存貯體。

    aws emr-serverless start-job-run \ --application-id <application-id> \ --execution-role-arn <job-role-arn> \ --name <job-run-name> \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3a://<DOC-EXAMPLE-BUCKET>/scripts/wordcount.py", "entryPointArguments":["s3a://<DOC-EXAMPLE-BUCKET>/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=8g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=2 --conf spark.hadoop.fs.s3a.change.detection.mode=none --conf spark.hadoop.fs.s3a.endpoint.region={<AWS_REGION>} --conf spark.hadoop.fs.s3a.select.enabled=false --conf spark.sql.sources.fastS3PartitionDiscovery.enabled=false }'