使用多架构镜像 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用多架构镜像

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

EKS 上的 Amazon EMR 自定义镜像既支持基于 AWS Graviton EC2 的实例,也支持实例。 non-Graviton-based EC2 基于 Graviton 的图像与图像存储在 Amazon ECR 中的相同图像存储库中。 non-Graviton-based

例如,要检查 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 的 non-Graviton-based EC2实例和实例的异构集群中,实例会根据提取映像的实例架构来确定正确的架构映像。