マルチアーキテクチャイメージを使用する - Amazon EMR

マルチアーキテクチャイメージを使用する

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" } } ] }

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

  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
  2. マルチアーキテクチャイメージを作成するには、Amazon ECR のマルチアーキテクチャコンテナイメージの紹介の手順に従います。

    注記

    arm64 イメージは arm64 インスタンス上に作成する必要があります。同様に、amd64 インスタンス上に amd64 イメージを作成する必要があります。

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

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