

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

# マルチアーキテクチャイメージを使用する
<a name="docker-custom-images-multi-architecture"></a>

Amazon EMR on EKS は、Amazon Elastic Container Registry (Amazon ECR) のマルチアーキテクチャコンテナイメージをサポートしています。詳細については、[Amazon ECR のマルチアーキテクチャコンテナイメージの紹介](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/)を参照してください。

Amazon EMR on EKS カスタムイメージは、Graviton AWS ベースの EC2 インスタンスとnon-Graviton-based EC2 インスタンスの両方をサポートします。Graviton ベースのイメージは、非 Graviton ベースのイメージと同じ Amazon ECR のイメージリポジトリに格納されています。

例えば、Docker マニフェストリストに 6.6.0 イメージがあるかどうかを確認するには、次のコマンドを実行します。

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

出力は次のとおりです。`arm64` アーキテクチャは Graviton インスタンス用です。`amd64` は 非 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"
         }
      }
   ]
}
```

マルチアーキテクチャイメージを作成するには、次のステップに従います。

1. 次の内容で `Dockerfile` を作成して、`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. マルチアーキテクチャイメージを作成するには、[Amazon ECR のマルチアーキテクチャコンテナイメージの紹介](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/)の手順に従います。
**注記**  
`arm64` イメージは `arm64` インスタンス上に作成する必要があります。同様に、`amd64` インスタンス上に `amd64` イメージを作成する必要があります。

   Docker `buildx` コマンドを使用すると、特定のインスタンスタイプごとに作成せずに、マルチアーキテクチャイメージを作成することもできます。詳細については、[Leverage multi-CPU architecture support](https://docs.docker.com/desktop/multi-arch/) を参照してください。

1. マルチアーキテクチャイメージを作成した後、同じ `spark.kubernetes.container.image` パラメータを使用してイメージを参照することにより、ジョブを送信できます。Graviton ベースの EC2 インスタンスとnon-Graviton-based EC2 AWS インスタンスの両方を持つ異種クラスターでは、インスタンスはイメージをプルするインスタンスアーキテクチャに基づいて正しいアーキテクチャイメージを決定します。