

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 다중 아키텍처 이미지 작업
<a name="docker-custom-images-multi-architecture"></a>

Amazon EMR on EKS는 Amazon Elastic Container Registry(Amazon ECR)에 대한 다중 아키텍처 컨테이너 이미지를 지원합니다. 자세한 내용은 [Introducing multi-architecture container images for Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/)을 참조하세요.

Amazon EMR on EKS 사용자 지정 이미지는 AWS Graviton 기반 EC2 인스턴스와 non-Graviton-based 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. `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
   ```

1. 다중 아키텍처 이미지를 빌드하려면 [Introducing multi-architecture container images for Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/)의 지침을 따릅니다.
**참고**  
`arm64` 인스턴스에서 `arm64` 이미지를 생성해야 합니다. 마찬가지로 `amd64` 인스턴스에서 `amd64` 이미지를 빌드해야 합니다.

   또한 Docker `buildx` 명령을 사용하여 각 특정 인스턴스 유형에 빌드하지 않고도 다중 아키텍처 이미지를 빌드할 수 있습니다. 자세한 내용은 [Leverage multi-CPU architecture support](https://docs.docker.com/desktop/multi-arch/)를 참조하세요.

1. 다중 아키텍처 이미지를 빌드한 후 동일한 `spark.kubernetes.container.image` 파라미터를 사용하여 작업을 제출하고 해당 이미지를 가리킬 수 있습니다. AWS Graviton 기반 및 non-Graviton-based EC2 인스턴스가 모두 있는 이기종 클러스터에서 인스턴스는 이미지를 가져오는 인스턴스 아키텍처를 기반으로 올바른 아키텍처 이미지를 결정합니다.