Chargement de données vers Amazon S3 Express One Zone - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chargement de données vers Amazon S3 Express One Zone

Présentation

Avec Amazon EMR 6.15.0 et versions ultérieures, vous pouvez utiliser Amazon EMR avec Apache Spark conjointement avec la classe de stockage Amazon S3 Express One Zone pour améliorer les performances de vos tâches Spark. EMRLes versions 7.2.0 et ultérieures d'Amazon prennent également en charge HBase Flink et Hive. Vous pouvez donc également bénéficier de S3 Express One Zone si vous utilisez ces applications. S3 Express One Zone est une classe de stockage S3 destinée aux applications qui accèdent fréquemment aux données avec des centaines de milliers de requêtes par seconde. À son lancement, S3 Express One Zone offre la latence la plus faible et les meilleures performances de stockage d’objets cloud dans Amazon S3.

Prérequis

  • Autorisations S3 Express One Zone : lorsque S3 Express One Zone effectue initialement une action telle que GET, LIST ou PUT sur un objet Amazon S3, la classe de stockage appelle CreateSession pour vous. Votre IAM politique doit autoriser l's3express:CreateSessionautorisation afin que le S3A connecteur puisse invoquer le CreateSessionAPI. Pour obtenir un exemple de politique avec cette autorisation, voir la rubrique Premiers pas avec Amazon S3 Express One Zone.

  • Connecteur S3A : pour configurer votre cluster Spark pour accéder aux données d’un compartiment Amazon S3 utilisant la classe de stockage S3 Express One Zone, vous devez utiliser le connecteur Apache Hadoop S3A. Pour utiliser le connecteur, assurez-vous que tous les S3 URIs utilisent le s3a schéma. Si ce n’est pas le cas, vous pouvez modifier l’implémentation du système de fichiers que vous utilisez pour les schémas s3 et s3n.

Pour modifier le schéma s3, spécifiez les configurations de cluster suivantes :

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

Pour modifier le schéma s3n, spécifiez les configurations de cluster suivantes :

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

Premiers pas avec Amazon S3 Express One Zone

Création d’une politique d’autorisation

Avant de créer un cluster utilisant Amazon S3 Express One Zone, vous devez créer une IAM politique à associer au profil d'EC2instance Amazon du cluster. La politique doit disposer des autorisations permettant d’accéder à la classe de stockage S3 Express One Zone. L’exemple de politique suivant montre l’autorisation requise. Après avoir créé la politique, attachez-la au rôle de profil d'instance que vous utilisez pour créer votre EMR cluster, comme décrit dans la Création et configuration de votre cluster section.

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

Création et configuration de votre cluster

Créez ensuite un cluster qui exécute SparkHBase, Flink ou Hive avec S3 Express One Zone. La procédure suivante explique de manière générale comment créer un cluster dans la AWS Management Console :

  1. Accédez à la EMR console Amazon et sélectionnez Clusters dans la barre latérale. Ensuite, choisissez Créer un cluster.

  2. Si vous utilisez Spark, sélectionnez Amazon EMR version emr-6.15.0 ou supérieure. Si vous utilisez HBase Flink ou Hive, sélectionnez emr-7.2.0 ou une version supérieure.

  3. Sélectionnez les applications que vous souhaitez inclure dans votre cluster, telles que Spark ou Flink. HBase

  4. Pour activer Amazon S3 Express One Zone, entrez une configuration similaire à l’exemple suivant dans la section Paramètres du logiciel. Les configurations et les valeurs recommandées sont présentées dans la section Présentation des configurations qui suit cette procédure.

    [ { "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. Dans la EMR section profil d'EC2instance pour Amazon, choisissez d'utiliser un rôle existant et d'utiliser un rôle associé à la politique que vous avez créée dans la Création d’une politique d’autorisation section ci-dessus.

  6. Configurez le reste des paramètres de votre cluster en fonction de votre application, puis sélectionnez Créer un cluster.

Présentation des configurations

Les tableaux suivants décrivent les configurations et les valeurs suggérées que vous devez spécifier lorsque vous configurez un cluster utilisant S3 Express One Zone avec AmazonEMR, comme décrit dans la Création et configuration de votre cluster section.

Configurations S3A

Paramètre Valeur par défaut Valeur suggérée Explication

fs.s3a.aws.credentials.provider

Si aucune valeur n’est spécifiée, utilise les éléments de la AWSCredentialProviderList dans l’ordre suivant : TemporaryAWSCredentialsProvider, SimpleAWSCredentialsProvider, EnvironmentVariableCredentialsProvider, IAMInstanceCredentialsProvider.

software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider

Le rôle de profil d'EMRinstance Amazon doit avoir la politique qui autorise le système de S3A fichiers à appelers3express:CreateSession. Les autres fournisseurs d’identifiants fonctionnent également s’ils disposent des autorisations S3 Express One Zone.

fs.s3a.endpoint.region

null

L' Région AWS endroit où vous avez créé le bucket.

La logique de résolution de région ne fonctionne pas avec la classe de stockage S3 Express One Zone.

fs.s3a.select.enabled

true

false

L’option select d’Amazon S3 n’est pas prise en charge avec la classe de stockage S3 Express One Zone.

fs.s3a.change.detection.mode

server

none

Détection des modifications par des tâches S3A reposant sur la vérification des etags basées sur MD5. La classe de stockage S3 Express One Zone ne prend pas en charge les checksums MD5.

Configurations Spark

Paramètre Valeur par défaut Valeur suggérée Explication

spark.sql.sources.fastS3PartitionDiscovery.enabled

true

false

L'optimisation interne utilise un API paramètre S3 que la classe de stockage S3 Express One Zone ne prend pas en charge.

Considérations

Tenez compte des points suivants lorsque vous intégrez Apache Spark sur Amazon EMR à la classe de stockage S3 Express One Zone :

  • Amazon S3 Express One Zone est pris en charge avec les EMR versions 6.15.0 et supérieures d'Amazon.

  • Le connecteur S3A est nécessaire pour utiliser S3 Express One Zone avec AmazonEMR. Seul le connecteur S3A dispose des fonctionnalités et des classes de stockage nécessaires pour interagir avec la classe de stockage S3 Express One Zone. Pour savoir comment configurer le connecteur, voir la rubrique Prérequis.

  • La classe de stockage Amazon S3 Express One Zone n'est prise en charge par Spark que sur un EMR cluster Amazon qui s'exécute sur AmazonEC2.

  • La classe de stockage Amazon S3 Express One Zone prend uniquement en charge le chiffrement SSE-S3. Pour plus d'informations, consultez Chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3).

  • La classe de stockage Amazon S3 Express One Zone ne prend pas en charge les écritures avec le FileOutputCommitter S3A. Les écritures avec le FileOutputCommitter S3A sur des compartiments S3 Express One Zone entraînent l’erreur suivante : InvalidStorageClass: The storage class you specified is not valid.

  • La classe de stockage Amazon S3 Express One Zone n'est pas prise en charge avec Amazon EMR Serverless ou Amazon EMR onEKS.