

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.

# Système de fichiers S3A
<a name="emr-s3a-file"></a>

Cette section décrit les protocoles permettant à Spark de s'exécuter sur Amazon Elastic Map Reduce (EMR) lors de l'utilisation du système de fichiers S3A.

# Émetteur S3A MagicV2
<a name="s3a-magicv2-committer"></a>

Avec la version EMR-6.15.0, Amazon EMR introduit un nouveau type de transmetteur S3A connu sous le nom de transmetteur MagicV2. Pour obtenir des informations complètes sur cette fonctionnalité, veuillez consulter les sections de documentation correspondantes.

Le MagicV2 Committer représente une implémentation améliorée de l'open source [MagicCommitter](https://javadoc.io/static/org.apache.hadoop/hadoop-aws/3.4.0/org/apache/hadoop/fs/s3a/commit/magic/MagicS3GuardCommitter.html), spécialement conçue pour optimiser l'écriture de fichiers sur Amazon S3 via le système de fichiers S3A. Comme son prédécesseur, il tire parti des fonctionnalités de téléchargement partitionné d'Amazon S3 pour éliminer les opérations traditionnelles de liste et de renommage généralement associées aux phases de validation des tâches et des tâches.

Par rapport à l'original MagicCommitter, le validateur MagicV2 affiche des performances supérieures en écrivant des fichiers sur l'emplacement de sortie de la tâche pendant la phase de validation de la tâche, plutôt que pendant la phase de validation de la tâche. Cette approche permet l'écriture de fichiers distribués et élimine le besoin de stocker temporairement les métadonnées de validation sur Amazon S3, ce qui se traduit par une meilleure rentabilité. En outre, le validateur MagicV2 offre une flexibilité accrue en permettant le remplacement des chemins de fichiers sur plusieurs threads au cours du processus de validation.

## Activer le Committer MagicV2
<a name="s3a-magicv2-committer-enable"></a>

Pour activer le validateur MagicV2, transmettez la configuration suivante dans la configuration de votre tâche ou utilisez la configuration du site principal pour définir la propriété. Pour plus d'informations, consultez [Configuration des applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).

```
mapreduce.outputcommitter.factory.scheme.s3a=org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory
fs.s3a.committer.magic.enabled=true
fs.s3a.committer.name=magicv2
fs.s3a.committer.magic.track.commits.in.memory.enabled=true
```

Pour les charges de travail qui nécessitent le remplacement du répertoire existant avant de valider ou d'écrire les nouveaux fichiers, la configuration supplémentaire suivante est requise, en plus de la configuration mentionnée précédemment.

```
fs.s3a.committer.magic.overwrite.and.commit=true
fs.s3a.committer.magic.delete.directory.threads=thread size
```

La valeur par défaut de la `threads` configuration est`20`. Toutefois, ce paramètre doit être ajusté lorsqu'un grand nombre de répertoires doivent être remplacés pour de meilleures performances. Ceci n'est disponible que dans EMR-7.2.0 et versions ultérieures.

## Considérations
<a name="considerations"></a>
+ Si la machine virtuelle Java (JVM) tombe en panne ou est interrompue alors que des tâches sont en cours d'exécution et qu'elles écrivent des données sur Amazon S3, les chargements partitionnés incomplets sont plus susceptibles d'être laissés pour compte. C'est pourquoi, lorsque vous utilisez le validateur MagicV2, veillez à suivre les meilleures pratiques en matière de gestion des téléchargements partitionnés ayant échoué. Pour plus d'informations, consultez la section [Meilleures pratiques relatives à l'utilisation des compartiments Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-upload-s3.html#emr-bucket-bestpractices) dans le Guide de gestion Amazon EMR.
+ Si une tâche échoue, tous les fichiers validés par les tâches réussies seront toujours visibles dans le chemin de destination. Dans ce cas, l'utilisateur devra nettoyer manuellement les fichiers validés avant de réexécuter la tâche sur le même chemin de destination.
+ Le validateur MagicV2 consomme une petite quantité de mémoire pour chaque fichier écrit par une tentative de tâche jusqu'à ce que la tâche soit validée ou abandonnée. Dans la plupart des tâches, la quantité de mémoire utilisée est négligeable. Toutefois, dans certains cas, lorsqu'un seul processus exécuteur gère simultanément un grand nombre de tâches, cela peut entraîner une forte pression sur la mémoire et le conteneur ou l'exécuteur risque de manquer de mémoire (OOM). L'augmentation de la mémoire du conteneur ou de l'exécuteur devrait résoudre ce problème.

# Guide de migration : système de fichiers EMRFS vers S3A
<a name="emr-s3a-migrate"></a>

Depuis la version EMR-7.10.0, le système de fichiers S3A est le système de fichiers/connecteur s3 par défaut pour les clusters EMR pour tous les schémas de fichiers S3, y compris les suivants :
+ **s3 ://**
+ **s3n ://**
+ **s3a ://**

Cette modification s'applique à tous les déploiements EMR EC2, y compris EKS et EMR Serverless.

Si vous souhaitez continuer à utiliser EMRFS, vous pouvez le configurer en ajoutant la propriété suivante au fichier de `core-site.xml` configuration :

```
<property>
  <name>fs.s3.impl</name>
  <value>com.amazon.ws.emr.hadoop.fs.EmrFileSystem</value>
</property>
```

## Migration de configurations EMRFS existantes vers des configurations S3A
<a name="emr-s3a-migration-of-existing-emrfs-configurations"></a>

**Note**  
Amazon EMR implémente le mappage automatique de configuration entre EMRFS et S3A lorsque des conditions spécifiques sont remplies. Le processus de mappage se produit automatiquement lorsque les configurations S3A ne sont pas définies alors que les configurations EMRFS correspondantes sont présentes. Cette fonctionnalité de mappage automatique s'étend aux configurations au niveau du compartiment, permettant une intégration parfaite entre les paramètres EMRFS et S3A. À titre d'illustration, lorsque vous configurez un paramètre de chiffrement spécifique à un compartiment dans EMRFS à l'aide de « fs.s3.bucket.amzn-s3-demo-bucket1 ». serverSideEncryption.kms.keyId' avec une valeur de « XYZ », le système l'associe automatiquement à la configuration S3A équivalente en attribuant à « fs.s3a.encryption.key » la valeur « XYZ » pour le bucket spécifié amzn-s3-demo-bucket1.

L'ensemble prédéfini de configurations EMRFS suivant sera automatiquement traduit en leurs équivalents de configuration S3A correspondants. Toutes les configurations actuellement mises en œuvre par le biais de remplacements de clusters ou de tâches seront facilement transférées vers le système de fichiers S3A sans nécessiter de configuration ou de modifications manuelles supplémentaires.

Par défaut, cette fonctionnalité de mappage de configuration est automatiquement activée. Les utilisateurs qui souhaitent désactiver cette traduction automatique peuvent le faire en ajoutant la propriété suivante au fichier de configuration core-site.xml.

```
<property>
  <name>fs.s3a.emrfs.compatibility.enable</name>
  <value>false</value>
</property>
```

**Note**  
Le mappage des clés de chiffrement depuis EMRFS (fs.s3. serverSideEncryption.kms.keyID ou fs.s3.cse.kms.keyID) à S3A (fs.s3a.encryption.key) se produisent uniquement lorsque le chiffrement SSE-KMS ou CSE-KMS est activé sur l'un ou l'autre des systèmes de fichiers.


**Mappage de configuration EMRFS vers S3A**  

| Nom de configuration EMRFS | Nom de configuration S3A | 
| --- | --- | 
| fs.s3.aimd.AdjustWindow | FS.S3A.AIMD.Régler la fenêtre | 
| fs.s3.aimd.enabled | fs.s3a.aimd.enabled | 
| fs.s3.aimd.IncreaseIncrement | fs.s3a.aimd.IncreaseIncrement | 
| fs.s3.aimd.taux initial | fs.s3a.aimd.taux initial | 
| FS.S3.AIMD.Max Tentatives | FS.S3A.AIMD.Max Tentatives | 
| Tarif fs.s3.aimd.min | Tarif fs.s3a.aimd.min | 
| Facteur de réduction FS.S3.AIM. | FS.S3A.AIM D. Facteur de réduction | 
| fs.s3.sts.endpoint | fs.s3a.assumed.role.sts.endpoint | 
| fs.s3.sts. sessionDurationSeconds | fs.s3a.assumed.role.session.duration | 
| FS.S3. Autorisation. Cartographie des rôles | FS.S3A. Autorisation. Cartographie des rôles | 
| fs.s3.authorization.ugi.groupName.Enabled | fs.s3a.Authorization.UGI.GroupName.Enabled | 
| fs.s3. credentialsResolverClass | fs.s3a.credentials.resolver | 
| fs.s3n.multipart.uploads.enabled | fs.s3a.multipart.uploads.enabled | 
| fs.s3n.multipart.uploads.split.size | fs.s3a.multipart.size | 
| fs.s3. serverSideEncryption.km. customEncryptionContext | fs.s3a.encryption.context | 
| fs.s3. enableServerSideChiffrement | fs.s3a.encryption.algorithm | 
| fs.s3. serverSideEncryption.kms.keyId/fs.s3.cse.kms.keyID | fs.s3a.encryption.key | 
| fs.s3.cse.kms.region | fs.s3a.encryption.cse.kms.region | 
| fs.s3.authorization.audit.enabled | fs.s3a.authorization.audit.enabled | 
| fs.s3.buckets.create.enabled | fs.s3a.bucket.probe | 
| fs.s3.delete. maxBatchSize | fs.s3a.bulk.delete.page.size | 
| fs.s3.filestatus.metadata.enabled | fs.s3a.metadata.cache.enabled | 
| Connexions FS.S3.max | fs.s3a.connection.maximum | 
| FS.S3.max Réessaie | fs.s3a.retry.limit | 
| fs.s3.metadata.cache.expiration.seconds | fs.s3a.metadata.cache.expiration.seconds | 
| fs.s3.buffer.dir | fs.s3a.buffer.dir | 
| fs.s3.cand.acl | fs.s3a.acl.default | 
| FS.S3.PositionedRead.Optimization.Activé | FS.S3A.PositionedRead.Optimization.Activé | 
| fs.s3. readFullyIntoBuffers.Optimization.Activé | fs.3a. readFullyIntoBuffers.Optimization.Activé | 
| FS.S3. Type de signature | algorithme de signature fs.s3a | 
| Classe de stockage FS.S3 | fs.s3a.create.storage.class | 
| fs.s3.threadpool.maxSize | fs.s3a.threads.max | 
| fs.s3. useRequesterPaysEn-tête | fs.s3a.requester.pays.enabled | 
| fs.s3n.block.size | fs.s3a .block.size | 
| fs.s3n.endpoint | point de terminaison fs.s3a. | 
| fs.s3n.ssl.enabled | fs.s3a.connection.ssl.enabled | 
| fs.s3.open. acceptsFileStatus | fs.s3a.open. acceptsFileStatus | 
| connexion fs.s3. maxIdleMilliSecondes | fs.s3a.connection.idle.time | 
| fs.s3.s3 .enabled AccessGrants | fs.s3a.access.grants.enabled | 
| fs.s3.s3AccessGrants. Retournez à IAM | fs.s3a.access.grants.fallback.to.iam | 

### Considérations et restrictions
<a name="emr-s3a-migration-considerations-and-limitations"></a>
+ Tous les moteurs EMR (Spark, Flink, Tez MapReduce, Hive, etc.) utiliseront le S3A comme connecteur S3 par défaut, à l'exception des moteurs Trino et Presto.
+ L'EMR S3A ne prend pas en charge l'intégration avec EMR Ranger. Envisagez de migrer vers AWS Lake Formation.
+ AWS Lake Formation Support with RecordServer For EMR Spark with S3A n'est pas pris en charge. Pensez à utiliser Spark Native FGAC.
+ AWS S3 Select n'est pas pris en charge.
+ L'option de nettoyage périodique en cas de téléchargement partiel (MPU) incomplet n'est pas disponible avec S3A. Envisagez de configurer la [politique de cycle de vie des compartiments S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) pour éliminer les éléments pendants MPUs.
+ [Afin de migrer d'EMRFS vers S3A tout en utilisant le chiffrement S3 CSE-CUSTOM, le fournisseur de clés personnalisées doit être réécrit d'une interface à l'autre. [EMRFSRSAEncryptionMaterialsProvider](https://github.com/awslabs/emr-sample-apps/tree/master/emrfs-plugins/EMRFSRSAEncryptionMaterialsProvider)](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/choose-keyring.html) Reportez-vous à la section Configuration de S3A [CSE-CUSTOM](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-s3a-cse-custom.html) pour plus d'informations.
+ Les répertoires Amazon S3 créés à l'aide d'EMRFS sont marqués d'un suffixe « \$1\$1folder\$1 », tandis que les répertoires créés à l'aide du système de fichiers S3A se terminent par un suffixe «/», ce qui est cohérent avec les répertoires créés via la console S3. AWS 
+ Pour utiliser un fournisseur d'informations d'identification S3 personnalisé, définissez la propriété de configuration S3A `fs.s3a.aws.credentials.provider` avec la même classe de fournisseur d'informations d'identification que celle utilisée précédemment dans la configuration EMRFS. `fs.s3.customAWSCredentialsProvider`

### Configurations EMRFS non prises en charge
<a name="emr-s3a-migration-unsupported"></a>

Les configurations EMRFS suivantes ont été identifiées comme non prises en charge ou obsolètes et, par conséquent, aucun mappage direct ne sera fourni à leurs homologues de configuration S3A. Ces configurations spécifiques ne seront pas automatiquement traduites ou reportées lors de la migration vers le système de fichiers S3A.


**Configurations EMRFS non prises en charge et raisons**  
<a name="unsupported-emrfs-configs"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/emr/latest/ReleaseGuide/emr-s3a-migrate.html)