Amazon S3 Express One Zone에 데이터 업로드 - Amazon EMR

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

Amazon S3 Express One Zone에 데이터 업로드

개요

Amazon EMR 6.15.0 이상에서는 Amazon Amazon S3 Express One Zone 스토리지 클래스와 함께 Amazon EMR with Apache Spark를 사용하여 Spark 작업의 성능을 개선할 수 있습니다. Amazon EMR 릴리스 7.2.0 이상은 HBase, Flink 및 Hive도 지원하므로 이러한 애플리케이션을 사용하는 경우에도 S3 Express One Zone의 이점을 누릴 수 있습니다. S3 Express One Zone은 초당 수십만 개의 요청을 통해 데이터에 빈번하게 액세스하는 애플리케이션을 위한 S3 스토리지 클래스입니다. 릴리스 시점에 S3 Express One Zone은 Amazon S3에서 지연 시간이 가장 낮고 성능은 가장 뛰어난 클라우드 객체 스토리지를 제공합니다.

사전 조건

  • S3 Express One Zone 권한 - S3 Express One Zone이 S3 객체에 대해 GET, LIST 또는 PUT과 같은 작업을 최초로 수행하면 스토리지 클래스가 사용자를 대신하여 CreateSession을 호출합니다. IAM 정책은 s3express:CreateSession 권한을 허용해야 합니다.S3A 커넥터는 CreateSession 를 호출할 수 있습니다API. 이 권한이 있는 정책 예시는 Amazon S3 Express One Zone 시작하기 섹션을 참조하세요.

  • S3A 커넥터 - S3 Express One Zone 스토리지 클래스를 사용하는 Amazon S3 버킷의 데이터에 액세스하도록 Spark 클러스터를 구성하려면 Apache Hadoop 커넥터를 사용해야 합니다.S3A. 커넥터를 사용하려면 모든 S3가 s3a 체계를 URIs 사용하는지 확인합니다. 그렇지 않은 경우 s3s3n 체계에 대해 사용하는 파일 시스템 구현을 변경할 수 있습니다.

s3 체계를 변경하려면 다음 클러스터 구성을 지정하세요.

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

s3n 체계를 변경하려면 다음 클러스터 구성을 지정하세요.

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

Amazon S3 Express One Zone 시작하기

권한 정책 생성

Amazon S3 Express One Zone을 사용하는 클러스터를 생성하려면 먼저 클러스터의 Amazon EC2 인스턴스 프로파일에 연결할 IAM 정책을 생성해야 합니다. 정책에는 S3 Express One Zone 스토리지 클래스에 액세스할 수 있는 권한이 있어야 합니다. 다음 정책 예제에서는 필요한 권한을 부여하는 방법을 보여줍니다. 정책을 생성한 후 클러스터 생성 및 구성 섹션에 설명된 대로 EMR 클러스터를 생성하는 데 사용하는 인스턴스 프로필 역할에 정책을 연결합니다.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3express:region-code:account-id:bucket/DOC-EXAMPLE-BUCKET", "Action": [ "s3express:CreateSession" ] } ] }

클러스터 생성 및 구성

다음으로 S3 Express One Zone을 사용하여 Spark, , HBaseFlink 또는 Hive를 실행하는 클러스터를 생성합니다. 다음 단계에서는 AWS Management Console에서 클러스터를 생성하는 방법을 개략적으로 설명합니다.

  1. Amazon EMR 콘솔로 이동하여 사이드바에서 클러스터를 선택합니다. 그 다음에 클러스터 생성을 선택합니다.

  2. Spark를 사용하는 경우 Amazon EMR 릴리스 emr-6.15.0 이상을 선택합니다. HBase, Flink 또는 Hive를 사용하는 경우 emr-7.2.0 또는 그 이상을 선택합니다.

  3. Spark, HBase또는 Flink와 같이 클러스터에 포함할 애플리케이션을 선택합니다.

  4. Amazon S3 Express One Zone을 활성화하기 위해 소프트웨어 설정 섹션에 다음 예시와 비슷한 구성을 입력합니다. 구성 및 권장되는 값은 이 절차 다음에 이어지는 구성 개요 섹션에서 확인할 수 있습니다.

    [ { "Classification": "core-site", "Properties": { "fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider", "fs.s3a.change.detection.mode": "none", "fs.s3a.endpoint.region": "aa-example-1", "fs.s3a.select.enabled": "false" } }, { "Classification": "spark-defaults", "Properties": { "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ]
  5. EC2 Amazon의 인스턴스 프로파일 EMR 섹션에서 기존 역할을 사용하도록 선택하고 위 권한 정책 생성 섹션에서 생성한 정책이 연결된 역할을 사용합니다.

  6. 나머지 클러스터 설정을 애플리케이션에 맞게 구성한 다음 클러스터 생성을 선택합니다.

구성 개요

다음 표에서는 클러스터 생성 및 구성 섹션에 설명된 EMR대로 Amazon 에서 S3 Express One Zone을 사용하는 클러스터를 설정할 때 지정해야 하는 구성 및 제안 값을 설명합니다.

S3A 구성

파라미터 기본값 제안된 값 설명

fs.s3a.aws.credentials.provider

지정되지 않은 경우에는 AWSCredentialProviderListTemporaryAWSCredentialsProvider, SimpleAWSCredentialsProvider, EnvironmentVariableCredentialsProvider, IAMInstanceCredentialsProvider의 순서로 사용합니다.

software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider

Amazon EMR 인스턴스 프로필 역할에는 를 허용하는 정책이 있어야 합니다.S3A 호출할 파일 시스템입니다s3express:CreateSession. 다른 보안 인증 정보 공급자도 S3 Express One Zone 권한이 있는 경우 작동할 수 있습니다.

fs.s3a.endpoint.region

null

버킷을 생성한 AWS 리전 입니다.

리전 확인 로직은 S3 Express One Zone 스토리지 클래스에서는 작동하지 않습니다.

fs.s3a.select.enabled

true

false

Amazon S3 select는 S3 Express One Zone 스토리지 클래스에서 지원되지 않습니다.

fs.s3a.change.detection.mode

server

없음

변경 감지 기준 S3A 는 를 확인하여 작동합니다.MD5-기반 etags. S3 Express One Zone 스토리지 클래스가 지원되지 않음 MD5 checksums.

Spark 구성

파라미터 기본값 제안된 값 설명

spark.sql.sources.fastS3PartitionDiscovery.enabled

true

false

내부 최적화는 S3 Express One Zone 스토리지 클래스가 지원하지 않는 S3 API 파라미터를 사용합니다.

고려 사항

Amazon의 Apache Spark를 S3 Express One Zone 스토리지 클래스EMR와 통합할 때는 다음 사항을 고려하세요.

  • S3A 커넥터는 Amazon 에서 S3 Express One Zone을 사용하는 데 필요합니다EMR. S3 Express One Zone과 상호 작용하는 데 필요한 기능과 스토리지 클래스는 S3A에만 있습니다. 커넥터를 설정하는 단계는 사전 조건 섹션을 참조하세요.

  • Amazon S3 Express One Zone 스토리지 클래스는 Amazon 에서 실행되는 Amazon EMR 클러스터의 Spark에서만 지원됩니다EC2.

  • Amazon S3 Express One Zone 스토리지 클래스는 SSE-S3 암호화. 자세한 내용은 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화를 참조하세요.

  • Amazon S3 Express One Zone 스토리지 클래스는 S3A FileOutputCommitter를 사용한 쓰기를 지원하지 않습니다. S3 Express One Zone 버킷에서 S3A를 사용하여 를 작성하면 오류가 발생합니다. FileOutputCommitter S3 InvalidStorageClass: The storage class you specified is not valid.

  • Amazon S3 Express One Zone은 의 Amazon EMR 릴리스 6.15.0 이상EMR에서 지원됩니다EC2. 또한 Amazon on EMR EKS 및 Amazon EMR Serverless의 Amazon EMR 릴리스 7.2.0 이상에서 지원됩니다.