マルチアーキテクチャイメージを使用する
Amazon EMR on EKS は、Amazon Elastic Container Registry (Amazon ECR) のマルチアーキテクチャコンテナイメージをサポートしています。詳細については、Amazon ECR のマルチアーキテクチャコンテナイメージの紹介
EKS での Amazon EMR カスタムイメージは、AWS Graviton ベースの EC2 インスタンスと非 Graviton ベースの 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" } } ] }
マルチアーキテクチャイメージを作成するには、次のステップに従います。
-
次の内容で
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
-
マルチアーキテクチャイメージを作成するには、Amazon ECR のマルチアーキテクチャコンテナイメージの紹介
の手順に従います。 注記
arm64
イメージはarm64
インスタンス上に作成する必要があります。同様に、amd64
インスタンス上にamd64
イメージを作成する必要があります。Docker
buildx
コマンドを使用すると、特定のインスタンスタイプごとに作成せずに、マルチアーキテクチャイメージを作成することもできます。詳細については、Leverage multi-CPU architecture supportを参照してください。 -
マルチアーキテクチャイメージを作成した後、同じ
spark.kubernetes.container.image
パラメータを使用してイメージを参照することにより、ジョブを送信できます。AWS Graviton ベースと非 Graviton ベースの EC2 インスタンスの両方を含む異種クラスターでは、インスタンスはそのイメージをプルするインスタンスアーキテクチャに基づいて正しいアーキテクチャイメージを決定します。