翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EMR Serverless を使用して S3 Express One Zone にデータを取得する
Amazon EMR リリース 7.2.0 以降では、Amazon S3 Express One Zone ストレージクラスで EMR Serverless を使用して、ジョブとワークロードを実行する際のパフォーマンスを向上させることができます。S3 Express One Zone は、最もレイテンシーの影響を受けやすいアプリケーションに 1 桁のミリ秒単位で一貫したデータアクセスを提供する、高パフォーマンスの単一ゾーンの Amazon S3 ストレージクラスです。リリース時点で、S3 Express One Zone は、Amazon S3 の中でレイテンシーが最も低く、パフォーマンスの最も高いクラウドオブジェクトストレージを提供しています。
前提条件
-
S3 Express One Zone のアクセス許可 - S3 Express One Zone が S3 オブジェクトに対して
GET
、LIST
、PUT
などのアクションを最初に実行すると、ストレージクラスがユーザーに代わってCreateSession
を呼び出します。S3A コネクタがCreateSession
API を呼び出せるように、お使いの IAM ポリシーでs3express:CreateSession
アクセス許可を付与する必要があります。このアクセス許可ポリシーの例については、「S3 Express One Zone の使用を開始する」を参照してください。 -
S3A コネクタ - S3 Express One Zone ストレージクラスを使用する Amazon S3 バケットのデータにアクセスするように Spark クラスターを設定するには、Apache Hadoop コネクタ S3A を使用する必要があります。コネクタを使用するには、すべての S3 URI が
s3a
スキームを使用していることを確認してください。使用していない場合は、s3
スキームとs3n
スキーム用にファイルシステム実装を変更してください。
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 の使用を開始するには、次の手順に従います。
-
VPC エンドポイントを作成します。エンドポイント
com.amazonaws.us-west-2.s3express
を VPC エンドポイントに追加します。 -
「Amazon EMR Serverless の使用を開始する」に従って、Amazon EMR リリースラベル 7.2.0 以降でアプリケーションを作成します。
-
新しく作成された VPC エンドポイント、プライベートサブネットグループ、セキュリティグループを使用するようにアプリケーションを設定します。
-
CreateSession
アクセス許可をジョブの実行ロールに追加します。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "s3express:CreateSession" ] } ] }
-
ジョブを実行します。S3 Express One Zone バケットにアクセスするには、
S3A
スキームを使用する必要があります。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 }'