

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.

# Utilisation d'images multi-architectures
<a name="docker-custom-images-multi-architecture"></a>

Amazon EMR on EKS prend en charge les images de conteneurs multi-architectures pour Amazon Elastic Container Registry (Amazon ECR). Pour plus d'informations, consultez la rubrique [Présentation des images de conteneurs multi-architectures pour Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/).

Les images personnalisées Amazon EMR on EKS prennent en charge à la fois les instances EC2 AWS basées sur Graviton et les instances EC2. non-Graviton-based Les images basées sur Graviton sont stockées dans les mêmes référentiels d'images d'Amazon ECR que les images. non-Graviton-based 

Par exemple, pour inspecter la liste des manifestes Docker pour les images 6.6.0, exécutez la commande ci-dessous.

```
docker manifest inspect 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest 
```

Voici la sortie. L'architecture `arm64` est destinée aux instances Graviton. L'architecture `amd64` est destinée aux instances non-Graviton. 

```
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1805,
         "digest": "xxx123:6b971cb47d11011ab3d45fff925e9442914b4977ae0f9fbcdcf5cfa99a7593f0",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1805,
         "digest": "xxx123:6f2375582c9c57fa9838c1d3a626f1b4fc281e287d2963a72dfe0bd81117e52f",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      }
   ]
}
```

Pour créer des images multi-architectures, procédez comme suit :

1. Créez un `Dockerfile` avec le contenu suivant afin de pouvoir extraire l'image `arm64`.

   ```
   FROM --platform=arm64 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
   USER root
    
   RUN pip3 install boto3 // install customizations here
   USER hadoop:hadoop
   ```

1. Suivez les instructions de la rubrique [Présentation des images de conteneurs multi-architectures pour Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/) pour créer une image multi-architectures. 
**Note**  
Vous devez créer des images `arm64` sur les instances `arm64`. De même, vous devez créer des images `amd64` sur des instances `amd64`.

   Grâce à la commande Docker `buildx`, nous pouvez également créer des images multi-architectures sans utiliser chaque type d'instance spécifique. Pour plus d'informations, consultez la rubrique [Exploitation de la prise en charge de l'architecture multi-CPU](https://docs.docker.com/desktop/multi-arch/). 

1. Après avoir créé l'image multi-architectures, vous pouvez soumettre une tâche avec le même paramètre `spark.kubernetes.container.image` et la pointer vers l'image. Dans un cluster hétérogène comprenant à la fois des instances AWS basées sur Graviton et des instances non-Graviton-based EC2, l'instance détermine l'image d'architecture correcte en fonction de l'architecture d'instance qui extrait l'image.