Trabalho com imagens de múltiplas arquiteturas
O Amazon EMR no EKS oferece suporte a imagens de contêiner de múltiplas arquiteturas para o Amazon Elastic Container Registry (Amazon ECR). Para obter mais informações, consulte Introducing multi-architecture container images for Amazon ECR
As imagens personalizadas do Amazon EMR no EKS oferecem suporte a instâncias do EC2 baseadas no AWS Graviton e a instâncias do EC2 não baseadas no Graviton. As imagens baseadas no Graviton são armazenadas nos mesmos repositórios de imagens no Amazon ECR que as imagens não baseadas no Graviton.
Por exemplo, para inspecionar a lista de manifestos do Docker para imagens 6.6.0, execute o comando a seguir.
docker manifest inspect 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
Confira a saída a seguir. A arquitetura arm64 é para instâncias baseadas no Graviton. A arquitetura amd64 é para instâncias não baseadas no 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" } } ] }
Execute as seguintes etapas para criar imagens de múltiplas arquiteturas:
-
Crie um
Dockerfilecom o conteúdo apresentado a seguir para que você possa extrair a imagemarm64.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 -
Siga as instruções em Introducing multi-architecture container images for Amazon ECR
para desenvolver uma imagem com múltiplas arquiteturas. nota
Você deve criar imagens
arm64em instânciasarm64. De forma semelhante, você deve criar imagensamd64em instânciasamd64.Também é possível desenvolver imagens com múltiplas arquiteturas sem a necessidade de criar cada tipo de instância específico com o comando
buildxdo Docker. Para obter mais informações, consulte Leverage multi-CPU architecture support. -
Após criar uma imagem com múltiplas arquiteturas, você poderá enviar um trabalho com o mesmo parâmetro
spark.kubernetes.container.imagee direcioná-lo para a imagem. Em um cluster heterogêneo com instâncias do EC2 baseadas no AWS Graviton e não baseadas no Graviton, a instância determina a imagem de arquitetura correta com base na arquitetura da instância que extrai a imagem.