使用多架构镜像 - Amazon EMR

使用多架构镜像

Amazon EMR on EKS 支持适用于 Amazon Elastic Container Registry (Amazon ECR) 的多架构容器镜像。有关更多信息,请参阅适用于 Amazon ECR 的多架构容器镜像简介

Amazon EMR on EKS 自定义映像既支持基于 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 命令构建多架构映像,而无需基于每种特定实例类型上进行构建。有关更多信息,请参阅利用多 CPU 架构支持

  3. 构建多架构镜像后,您可以使用相同的 spark.kubernetes.container.image 参数并指向该映像来提交任务。在同时包括基于 AWS Graviton 和非基于 Graviton 的 EC2 实例的异构集群中,实例将根据拉取该映像的实例架构确定正确的架构映像。