使用多架构镜像 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用多架构镜像

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

EKS 上的 Amazon EMR 自定义镜像既支持基于 Amazon 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 参数并指向该映像来提交任务。在同时包含 Amazon 基于 Graviton 的 non-Graviton-based EC2实例和实例的异构集群中,实例会根据提取映像的实例架构来确定正确的架构映像。