로컬 Amazon EMR on Outposts를 사용하는 Amazon S3 on Outposts - Amazon Simple Storage Service

로컬 Amazon EMR on Outposts를 사용하는 Amazon S3 on Outposts

Amazon EMR은 AWS에서 Apache Hadoop 및 Apache Spark와 같은 빅 데이터 프레임워크 실행을 단순화하여 방대한 양의 데이터를 처리하고 분석하는 관리형 클러스터 플랫폼입니다. 이러한 프레임워크 및 관련 오픈 소스 프로젝트를 사용하면 분석 목적 및 비즈니스 인텔리전스 워크로드용 데이터를 처리할 수 있습니다. 또한 Amazon EMR은 대량의 데이터를 다른 AWS 데이터 스토어 및 데이터베이스로 변환하고 이동하는 데 도움이 되며, Amazon S3 on Outposts를 지원합니다. Amazon EMR에 대한 자세한 내용은 Amazon EMR 관리 안내서의 Amazon EMR on Outposts를 참조하세요.

Amazon S3 on Outposts의 경우, Amazon EMR은 버전 7.0.0에서 Apache Hadoop S3A 커넥터를 지원하기 시작했습니다. 이전 버전의 Amazon EMR은 로컬 S3 on Outposts를 지원하지 않으며 EMR 파일 시스템(EMRFS)은 지원되지 않습니다.

지원되는 애플리케이션

Amazon S3 on Outposts를 사용하는 Amazon EMR은 다음과 같은 애플리케이션을 지원합니다.

  • Hadoop

  • Spark

  • Hue

  • Hive

  • Sqoop

  • Pig

  • Hudi

  • Flink

자세한 내용은 Amazon EMR 릴리스 안내서를 참조하세요.

Amazon S3 on Outposts 버킷 생성 및 구성

Amazon EMR은 Amazon S3 on Outposts와 AWS SDK for Java를 사용하여 입력 데이터와 출력 데이터를 저장합니다. Amazon EMR 로그 파일은 사용자가 선택한 리전 Amazon S3 위치에 저장되며 Outpost에 로컬로 저장되지는 않습니다. 자세한 내용은 Amazon EMR 관리 안내서에서 Amazon EMR 로그를 참조하세요.

Amazon S3 및 DNS 요구 사항을 준수하기 위해 S3 on Outposts 버킷에는 이름 지정 제한 및 제한 사항이 있습니다. 자세한 내용은 S3 on Outposts 버킷 생성 단원을 참조하십시오.

Amazon EMR 버전 7.0.0 이상에서는 Amazon EMR을 S3 on Outposts 및 S3A 파일 시스템과 함께 사용할 수 있습니다.

필수 조건

S3 on Outposts 권한 - Amazon EMR 인스턴스 프로파일을 생성할 때 역할에 S3 on Outposts에 대한 AWS Identity and Access Management(IAM) 네임스페이스가 포함되어야 합니다. S3 on Outposts에는 자체 네임스페이스인 s3-outposts*가 있습니다. 이 네임스페이스를 사용하는 정책 예제는 S3 on Outposts로 IAM 설정 섹션을 참조하세요.

S3A 커넥터 - EMR 클러스터가 Amazon S3 on Outposts 버킷의 데이터에 액세스하도록 구성하려면 Apache Hadoop S3A 커넥터를 사용해야 합니다. 커넥터를 사용하려면 모든 S3 URI가 s3a 체계를 사용하는지 확인해야 합니다. 그렇지 않은 경우 S3 URI가 S3A 커넥터와 함께 작동하도록 EMR 클러스터에 사용하는 파일 시스템 구현을 구성할 수 있습니다.

S3A 커넥터와 함께 작동하도록 파일 시스템 구현을 구성하려면 file_scheme이 보유한 S3 URI 유형에 해당하는 EMR 클러스터의 fs.file_scheme.implfs.AbstractFileSystem.file_scheme.impl 구성 속성을 사용합니다. 다음 예시를 사용하려면 user input placeholders를 실제 정보로 대체하십시오. 예를 들어, 이 s3 체계를 사용하는 S3 URI의 파일 시스템 구현을 변경하려면 다음 클러스터 구성 속성을 지정합니다.

[ { "Classification": "core-site", "Properties": { "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

S3A를 사용하려면 fs.file_scheme.impl 구성 속성을 org.apache.hadoop.fs.s3a.S3AFileSystem으로 설정하고 fs.AbstractFileSystem.file_scheme.impl 속성을 org.apache.hadoop.fs.s3a.S3A로 설정합니다.

예를 들어 경로 s3a://bucket/...에 액세스하는 경우 fs.s3a.impl 속성을 org.apache.hadoop.fs.s3a.S3AFileSystem으로 설정하고 fs.AbstractFileSystem.s3a.impl 속성을 org.apache.hadoop.fs.s3a.S3A로 설정합니다.

Amazon S3 on Outposts를 사용하여 Amazon EMR 사용 시작

다음 주제에서는 Amazon S3 on Outposts를 사용하여 Amazon EMR 사용을 시작하는 방법을 알아봅니다.

권한 정책 생성

Amazon S3 on Outposts를 사용하는 EMR 클러스터를 생성하기 전에 클러스터의 Amazon EC2 인스턴스 프로파일에 연결할 IAM 정책을 생성해야 합니다. 정책에는 S3 on Outposts의 액세스 포인트 Amazon 리소스 이름(ARN)에 대한 액세스 권한이 있어야 합니다. S3 on Outposts용 IAM 정책을 생성하는 방법에 대한 자세한 내용은 S3 on Outposts로 IAM 설정 섹션을 참조하세요.

다음 정책 예제에서는 필요한 권한을 부여하는 방법을 보여줍니다. 정책을 생성한 후에는 클러스터 생성 및 구성 섹션의 내용대로 정책을 EMR 클러스터를 생성하는 데 사용하는 인스턴스 프로파일 역할에 연결할 수 있습니다. 이 예제를 사용하려면 user input placeholders를 사용자의 정보로 대체합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name, "Action": [ "s3-outposts:*" ] } ] }

클러스터 생성 및 구성

S3 on Outposts를 사용하여 Spark를 실행하는 클러스터를 생성하려면 콘솔에서 다음 단계를 완료하세요.

S3 on Outposts를 사용하여 Spark를 실행하는 클러스터를 만들려면
  1. https://console.aws.amazon.com/elasticmapreduce/에서 Amazon EMR 콘솔을 엽니다.

  2. 좌측 탐색 창에서 클러스터를 선택합니다.

  3. 클러스터 생성을 선택합니다.

  4. Amazon EMR 릴리스의 경우 emr-7.0.0 이상을 선택합니다.

  5. 애플리케이션 번들의 경우 Spark 대화형을 선택합니다. 그런 다음 클러스터에 포함할 다른 지원 애플리케이션을 선택합니다.

  6. Amazon S3 on Outposts를 활성화하려면 구성 설정을 입력합니다.

    샘플 구성 설정

    다음 샘플 구성 설정을 사용하려면 user input placeholders를 실제 정보로 대체합니다.

    [ { "Classification": "core-site", "Properties": { "fs.s3a.bucket.DOC-EXAMPLE-BUCKET.accesspoint.arn": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name" "fs.s3a.committer.name": "magic", "fs.s3a.select.enabled": "false" } }, { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" } } ], "Properties": {} }, { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" } } ], "Properties": {} }, { "Classification": "spark-defaults", "Properties": { "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64", "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ]
  7. 네트워킹 섹션에서 AWS Outposts 랙에 있는 Virtual Private Cloud(VPC) 및 서브넷을 선택합니다. Amazon EMR on Outposts에 대한 자세한 내용은 Amazon EMR 관리 안내서의 AWS Outposts의 EMR 클러스터를 참조하세요.

  8. Amazon EMR용 EC2 인스턴스 프로필 섹션에서 이전에 생성한 권한 정책이 첨부되어 있는 IAM 역할을 선택합니다.

  9. 나머지 클러스터 설정을 구성한 다음 클러스터 생성을 선택합니다.

구성 개요

다음 표에는 Amazon EMR과 함께 S3 on Outposts를 사용하는 클러스터를 설정하는 경우 S3A 및 Spark 구성 및 해당 파라미터에 대해 지정하는 값이 설명되어 있습니다.

S3A 구성
파라미터 기본값 S3 on Outposts의 필수 값 설명

fs.s3a.aws.credentials.provider

지정하지 않으면 S3A는 Outposts 버킷 이름을 가진 리전 버킷에서 S3를 찾습니다.

S3 on Outposts 버킷의 액세스 포인트 ARN

Amazon S3 on Outposts는 Outposts 버킷에 액세스할 수 있는 유일한 수단으로 Virtual Private Cloud(VPC) 전용 액세스 포인트를 지원합니다.

fs.s3a.committer.name

file

magic

매직 커미터는 S3 on Outposts에 대해 지원되는 유일한 커미터입니다.

fs.s3a.select.enabled

TRUE

FALSE

S3 Select는 Outposts에서 지원되지 않습니다.

JAVA_HOME

/usr/lib/jvm/java-8

/usr/lib/jvm/java-11-amazon-corretto.x86_64

S3A의 S3 on Outposts에는 Java 버전 11이 필요합니다.

Spark 구성
파라미터 기본값 S3 on Outposts의 필수 값 설명

spark.sql.sources.fastS3PartitionDiscovery.enabled

TRUE

FALSE

S3 on Outposts는 빠른 파티션을 지원하지 않습니다.

spark.executorEnv.JAVA_HOME

/usr/lib/jvm/java-8

/usr/lib/jvm/java-11-amazon-corretto.x86_64

S3A의 S3 on Outposts에는 Java 버전 11이 필요합니다.

고려 사항

Amazon EMR을 S3 on Outposts 버킷과 통합하는 경우에는 다음 사항을 고려하세요.

  • Amazon S3 on Outposts는 Amazon EMR 버전 7.0.0 이상에서 지원됩니다.

  • S3 on Outposts를 Amazon EMR과 함께 사용하기 위해서는 S3A 커넥터가 있어야 합니다. S3 on Outposts 버킷과 상호 작용하는 데 필요한 기능은 S3A에만 있습니다. S3A 커넥터 설정 정보는 사전 조건을 참조하세요.

  • Amazon S3 on Outposts는 Amazon EMR을 통해 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화만 지원합니다. 자세한 내용은 S3 on Outposts의 데이터 암호화 단원을 참조하십시오.

  • Amazon S3 on Outposts는 S3A FileOutputCommitter를 사용한 쓰기를 지원하지 않습니다. S3 on Outposts에서 S3A FileOutputCommitter를 사용하여 쓰면 invalidStorageClass: 지정한 스토리지 클래스가 유효하지 않습니다. 오류가 발생합니다.

  • Amazon S3 on Outposts는 Amazon EMR Serverless 또는 Amazon EMR on EKS에서 지원되지 않습니다.

  • Amazon EMR 로그는 사용자가 선택한 리전 Amazon S3 위치에 저장되며 S3 on Outposts 버킷에 로컬로 저장되지는 않습니다.