다중 아키텍처 이미지 작업
Amazon EMR on EKS는 Amazon Elastic Container Registry(Amazon ECR)에 대한 다중 아키텍처 컨테이너 이미지를 지원합니다. 자세한 내용은 Introducing multi-architecture container images for 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" } } ] }
다음 단계를 수행하여 다중 아키텍처 이미지를 생성합니다.
-
arm64
이미지를 가져올 수 있도록 다음 콘텐츠를 포함하는Dockerfile
을 생성합니다.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
-
다중 아키텍처 이미지를 빌드하려면 Introducing multi-architecture container images for Amazon ECR
의 지침을 따릅니다. 참고
arm64
인스턴스에서arm64
이미지를 생성해야 합니다. 마찬가지로amd64
인스턴스에서amd64
이미지를 빌드해야 합니다.또한 Docker
buildx
명령을 사용하여 각 특정 인스턴스 유형에 빌드하지 않고도 다중 아키텍처 이미지를 빌드할 수 있습니다. 자세한 내용은 Leverage multi-CPU architecture support를 참조하세요. -
다중 아키텍처 이미지를 빌드한 후 동일한
spark.kubernetes.container.image
파라미터를 사용하여 작업을 제출하고 해당 이미지를 가리킬 수 있습니다. AWS Graviton 기반 및 Graviton 기반 외 EC2 인스턴스가 모두 있는 이기종 클러스터에서는 인스턴스가 이미지를 가져오는 인스턴스 아키텍처를 기반으로 올바른 아키텍처 이미지를 결정합니다.