Amazon S3 Express One Zone にデータをアップロードする - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 Express One Zone にデータをアップロードする

概要

Amazon 6EMR.15.0 以降では、Amazon EMRと Apache Spark を Amazon S3 Express One Zone ストレージクラスと組み合わせて使用して、Spark ジョブのパフォーマンスを向上させることができます。Amazon EMRリリース 7.2.0 以降ではHBase、、Flink、および Hive もサポートされているため、これらのアプリケーションを使用する場合は S3 Express One Zone も利用できます。S3 Express One Zone は、1 秒間に数十万件単位のリクエストによりデータに頻繁にアクセスするようなアプリケーション用の S3 ストレージクラスです。リリース時点で、S3 Express One Zone は、Amazon S3 の中でレイテンシーが最も低く、パフォーマンスの最も高いクラウドオブジェクトストレージを提供しています。

前提条件

  • S3 Express One Zone のアクセス許可 - S3 Express One Zone が S3 オブジェクトに対して GETLISTPUT などのアクションを最初に実行すると、ストレージクラスがユーザーに代わって CreateSession を呼び出します。S3A コネクタが を呼び出すことができるように、IAMポリシーで CreateSession アクセスs3express:CreateSession許可を許可する必要がありますAPI。このアクセス許可ポリシーの例については、「Amazon S3 Express One Zone の使用を開始する」を参照してください。

  • S3A コネクタ - S3 Express One Zone ストレージクラスを使用する Amazon S3 バケットのデータにアクセスするように Spark クラスターを設定するには、Apache Hadoop コネクタ S3A を使用する必要があります。コネクタを使用するには、すべての S3 が s3aスキームURIsを使用していることを確認します。使用していない場合は、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" } } ]

Amazon S3 Express One Zone の使用を開始する

アクセス権ポリシーを作成する

Amazon S3 Express One Zone を使用するクラスターを作成する前に、クラスターの Amazon EC2インスタンスプロファイルにアタッチする IAMポリシーを作成する必要があります。ポリシーには S3 Express One Zone ストレージクラスにアクセスするためのアクセス許可が必要です。次のポリシー例は、必要なアクセス許可を付与する方法を示します。ポリシーを作成したら、 クラスターを作成および設定するセクションで説明されているように、EMRクラスターの作成に使用するインスタンスプロファイルロールにポリシーをアタッチします。

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3express:region-code:account-id:bucket/DOC-EXAMPLE-BUCKET", "Action": [ "s3express:CreateSession" ] } ] }

クラスターを作成および設定する

次に、S3 Express One Zone で SparkHBase、、Flink、または Hive を実行するクラスターを作成します。以下の手順では、 AWS Management Consoleにクラスターを作成するための大まかな概要を説明します。

  1. Amazon EMRコンソールに移動し、サイドバーからクラスターを選択します。次に、[クラスターを作成] を選択します。

  2. Spark を使用する場合は、Amazon EMRリリース emr-6.15.0 以降を選択します。HBase、Flink、または Hive を使用する場合は、 emr-7.2.0 以上を選択します。

  3. Spark、、HBaseFlink など、クラスターに含めるアプリケーションを選択します。

  4. Amazon S3 Express One Zone を有効にするには、[ソフトウェア設定] セクションで次の例のような設定を入力します。設定と推奨値については、この手順の後の 設定の概要 セクションで説明しています。

    [ { "Classification": "core-site", "Properties": { "fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider", "fs.s3a.change.detection.mode": "none", "fs.s3a.endpoint.region": "aa-example-1", "fs.s3a.select.enabled": "false" } }, { "Classification": "spark-defaults", "Properties": { "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ]
  5. EC2 Amazon のインスタンスプロファイルEMRセクションで、既存のロールを使用するように選択し、上記のアクセス権ポリシーを作成するセクションで作成したポリシーがアタッチされたロールを使用します。

  6. 残りのクラスター設定をアプリケーションに合わせて設定し、[クラスターを作成] を選択します。

設定の概要

次の表は、 クラスターを作成および設定するセクションで説明されているようにEMR、Amazon で S3 Express One Zone を使用するクラスターを設定するときに指定する必要がある設定と推奨値を示しています。

S3A 設定

パラメータ デフォルト値 推奨値 説明

fs.s3a.aws.credentials.provider

指定しない場合は、TemporaryAWSCredentialsProviderSimpleAWSCredentialsProviderEnvironmentVariableCredentialsProviderIAMInstanceCredentialsProvider の順序で AWSCredentialProviderList が使用されます。

software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider

Amazon EMRインスタンスプロファイルロールには、S3Aファイルシステムが を呼び出すことを許可するポリシーが必要ですs3express:CreateSession。S3 Express One Zone のアクセス許可があれば、他の認証情報プロバイダーも機能します。

fs.s3a.endpoint.region

null

バケットを AWS リージョン 作成した 。

リージョン解決ロジックは S3 Express One Zone ストレージクラスでは機能しません。

fs.s3a.select.enabled

true

false

Amazon S3 select は S3 Express One Zone ストレージクラスではサポートされていません。

fs.s3a.change.detection.mode

server

なし

S3A による変更検出は、MD5 ベースの etags をチェックすることで動作します。S3 Express One Zone ストレージクラスは MD5 checksums をサポートしていません。

Spark 設定

パラメータ デフォルト値 推奨値 説明

spark.sql.sources.fastS3PartitionDiscovery.enabled

true

false

内部最適化では、S3 Express One Zone ストレージクラスがサポートしていない S3 APIパラメータを使用します。

考慮事項

Amazon の Apache Spark を S3 Express One Zone ストレージクラスEMRと統合する場合は、次の点を考慮してください。

  • Amazon S3 Express One Zone は、Amazon EMRリリース 6.15.0 以降でサポートされています。

  • Amazon で S3A コネクタが必要ですEMR。 S3 S3 Express One Zone との通信に必要な機能とストレージクラスを備えているのは S3A だけです。コネクタを設定する手順については、「前提条件」を参照してください。

  • Amazon S3 Express One Zone ストレージクラスは、Amazon で実行される Amazon EMRクラスターの Spark でのみサポートされますEC2。

  • Amazon S3 Express One Zone ストレージクラスは SSE-S3 の暗号化のみをサポートします。詳細については、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)」を参照してください。

  • Amazon S3 Express One Zone ストレージクラスは S3A FileOutputCommitter での書き込みをサポートしていません。S3 Express One Zone のバケットに S3A FileOutputCommitter を使用して書き込みを行うと、エラー InvalidStorageClass: The storage class you specified is not valid が発生します。

  • Amazon S3 Express One Zone ストレージクラスは、Amazon EMR Serverless または EMRの Amazon ではサポートされていませんEKS。