Presto를 AWS Glue 데이터 카탈로그와 함께 사용하기 - 아마존 EMR

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

Presto를 AWS Glue 데이터 카탈로그와 함께 사용하기

Amazon EMR 릴리스 버전 5.10.0 이상을 사용하면 AWS Glue 데이터 카탈로그를 Presto의 기본 Hive 메타스토어로 지정할 수 있습니다. 영구 메타스토어가 필요하거나 여러 클러스터, 서비스, 애플리케이션 또는 AWS 계정에서 메타스토어를 공유해야 하는 경우에 이 구성을 사용하는 것이 좋습니다.

AWS Glue는 완전 관리형 Extract, Transform, Load (ETL) 서비스로, 간단하고 비용 효율적으로 데이터를 분류하고, 정리하고, 보강하고, 다양한 데이터 저장소 간에 안정적으로 이동할 수 있게 해줍니다. AWS Glue Data Catalog는 Amazon은 물론 Amazon, Amazon, Amazon EMR Redshift, Redshift Spectrum, Athena 및 Apache Hive 메타스토어와 호환되는 모든 애플리케이션과 통합되는 다양한 데이터 소스 및 데이터 형식에 대한 통합 메타데이터 리포지토리를 제공합니다. RDS AWS Glue 크롤러는 Amazon S3의 원본 데이터에서 스키마를 자동으로 추론하고 관련 메타데이터를 데이터 카탈로그에 저장할 수 있습니다. 데이터 카탈로그에 대한 자세한 내용은 Glue 개발자 가이드의 AWS Glue 데이터 카탈로그 채우기를AWS 참조하십시오.

AWS Glue에는 별도의 요금이 적용됩니다. 데이터 카탈로그의 메타데이터 저장 및 액세스에 대한 월별 요금, AWS Glue ETL 작업 및 Crawler 런타임에 대해 분당 청구되는 시간당 요금, 프로비저닝된 각 개발 엔드포인트에 대해 분당 시간당 요금이 청구됩니다. 데이터 카탈로그에는 최대 100만 개의 객체를 무료로 저장할 수 있습니다. 100만 개 이상의 객체를 저장하는 경우 백만 개가 넘는 객체 USD 100,000개당 1 USD가 부과됩니다. 데이터 카탈로그의 객체로는 테이블, 파티션 또는 데이터베이스가 있습니다. 자세한 내용은 Glue 요금을 참조하십시오.

중요

2017년 8월 14일 이전에 Amazon Athena 또는 Amazon Redshift Spectrum을 사용하여 테이블을 생성한 경우, 데이터베이스와 테이블은 아테나 관리형 카탈로그에 저장되며, 이 카탈로그는 Glue 데이터 카탈로그와는 별개입니다. AWS Amazon을 이러한 EMR 테이블과 통합하려면 AWS Glue 데이터 카탈로그로 업그레이드해야 합니다. 자세한 내용은 Amazon Athena 사용 설명서의 AWS Glue 데이터 카탈로그로 업그레이드를 참조하십시오.

AWS Glue 데이터 카탈로그를 메타스토어로 지정

AWS Management Console AWS CLI, 또는 Amazon을 사용하여 AWS Glue 데이터 카탈로그를 메타스토어로 지정할 수 있습니다. EMR API OR를 사용하는 경우 Presto의 구성 분류를 사용하여 데이터 카탈로그를 지정합니다. CLI API 또한 Amazon EMR 5.16.0 이상에서는 구성 분류를 사용하여 다른 데이터 카탈로그를 지정할 수 있습니다. AWS 계정콘솔을 사용할 때 고급 옵션 또는 빠른 옵션을 사용하여 데이터 카탈로그를 지정할 수 있습니다.

Console
새 콘솔에서 AWS Glue 데이터 카탈로그를 Hive 메타스토어로 지정하려면
  1. 에 AWS Management Console로그인하고 https://console.aws.amazon.com/emr 에서 아마존 EMR 콘솔을 엽니다.

  2. 왼쪽 탐색 창의 EMREC2켜짐에서 클러스터를 선택한 다음 클러스터 생성을 선택합니다.

  3. 애플리케이션 번들에서 Presto를 선택합니다.

  4. AWS Glue 데이터 카탈로그 설정에서 Presto 테이블 메타데이터에 사용 확인란을 선택합니다.

  5. 클러스터에 적용할 다른 옵션을 선택합니다.

  6. 클러스터를 시작하려면 클러스터 생성을 선택합니다.

CLI
다음을 사용하여 AWS Glue 데이터 카탈로그를 기본 Hive 메타스토어로 지정하려면 AWS CLI

클러스터를 생성할 때 다음 구성 분류를 지정하는 방법에 대한 예제는 애플리케이션 구성 섹션을 참조하세요.

아마존 EMR 5.16.0 이상

  • hive.metastore속성을 다음 glue JSON 예와 같이 설정합니다.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

    다른 AWS 계정데이터 카탈로그를 지정하려면 다음 JSON 예와 같이 hive.metastore.glue.catalogid 속성을 추가합니다. acct-id를 데이터 카탈로그의 AWS 계정으로 바꿉니다. Amazon EMR 버전 5.15.0 이하에서는 다른 AWS 계정 데이터 카탈로그를 사용할 수 없습니다.

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue", "hive.metastore.glue.catalogid": "acct-id" } } ]

    아마존 EMR 5.10.0부터 5.15.0까지

    다음 예와 true 같이 hive.metastore.glue.datacatalog.enabled 속성을 로 설정합니다. JSON

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore.glue.datacatalog.enabled": "true" } } ]

    프레스토 SQL (트리노) 를 사용하는 아마존 EMR 6.1.0 이상

    EMR버전 6.1.0부터 Presto는 Glue를 SQL 기본 Hive 메타스토어로 지원합니다. 다음 prestosql-connector-hive 예제와 같이 구성 분류를 사용하고 hive.metastore 속성을 로 glue 설정합니다. JSON

    Amazon EMR 버전 6.4.0 이상에서는 프레스토 대신 Trino라는 새 이름을 사용합니다. SQL Trino를 사용하는 경우 다음 구성 분류에서 prestosql-connector-hivetrino-connector-hive로 바꿉니다.

    [ { "Classification": "prestosql-connector-hive", "Properties": { "hive.metastore": "glue" } } ]

장기 실행 중인 클러스터에서 메타스토어를 전환하려면, 마스터 노드를 연결하고 /etc/presto/conf/catalog/hive.properties 파일의 속성 값을 직접 편집하고 Presto 서버(sudo restart presto-server)를 재시작하여, 해당 값을 릴리스 버전에 적합하도록 수동 설정할 수 있습니다. Amazon EMR 5.15.0 이전 버전에서 이 방법을 사용하는 경우 이 메서드가 로 hive.table-statistics-enabled 설정되어 있는지 확인하십시오. false 5.16.0 이상 릴리스 버전을 사용하는 경우 이러한 설정이 필요하지 않습니다. 그러나 나중에 테이블 및 파티션 통계는 지원되지 않습니다.

IAM권한

클러스터의 EC2 인스턴스 프로필에는 AWS Glue 작업에 대한 IAM 권한이 있어야 합니다. 또한 AWS Glue Data Catalog 객체에 대해 암호화를 활성화하는 경우 해당 역할에 암호화에 AWS KMS key 사용되는 객체를 암호화, 복호화 및 생성할 수 있어야 합니다.

AWS Glue 작업에 대한 권한

Amazon용 기본 EC2 인스턴스 프로필을 사용하는 EMR 경우 별도의 조치가 필요하지 않습니다. 에 첨부된 AmazonElasticMapReduceforEC2Role 관리형 정책은 필요한 모든 EMR_EC2_DefaultRole AWS Glue 작업을 허용합니다. 하지만 사용자 지정 EC2 인스턴스 프로필과 권한을 지정하는 경우 적절한 AWS Glue 작업을 구성해야 합니다. AmazonElasticMapReduceforEC2Role 관리형 정책을 시작점으로 사용합니다. 자세한 내용은 Amazon EMR Management Guide의 클러스터 EC2 인스턴스의 서비스 역할 (EC2인스턴스 프로필) 을 참조하십시오.

Glue 데이터 카탈로그의 암호화 및 AWS 복호화를 위한 권한

인스턴스 프로파일에 키를 사용하여 데이터를 암호화하고 복호화할 수 있는 권한이 필요합니다. 다음 두 설명이 모두 적용되는 경우에는 이러한 권한을 구성할 필요가 없습니다.

  • Glue의 관리 키를 사용하여 AWS Glue 데이터 카탈로그 객체의 암호화를 활성화합니다. AWS

  • AWS Glue 데이터 AWS 계정 카탈로그와 동일한 클러스터를 사용합니다.

그렇지 않으면 EC2 인스턴스 프로필에 연결된 권한 정책에 다음 설명을 추가해야 합니다.

[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:acct-id:key/12345678-1234-1234-1234-123456789012" } ] } ]

AWS Glue 데이터 카탈로그 암호화에 대한 자세한 내용은 AWS Glue 개발자 가이드의 데이터 카탈로그 암호화를 참조하십시오.

리소스 기반 권한

Amazon에서 AWS Glue를 Hive, Spark 또는 Presto와 함께 사용하는 경우 EMR AWS Glue는 데이터 카탈로그 리소스에 대한 액세스를 제어하는 리소스 기반 정책을 지원합니다. 이러한 리소스에는 데이터베이스, 테이블, 연결 및 사용자 정의 기능이 포함됩니다. 자세한 내용은 AWS Glue 개발자 안내서에서 AWS Glue 리소스 정책을 참조하세요.

리소스 기반 정책을 사용하여 Amazon 내에서 AWS Glue에 대한 액세스를 제한하는 경우EMR, 권한 정책에 지정하는 보안 주체는 클러스터를 생성할 때 지정된 EC2 인스턴스 ARN 프로필과 관련된 역할이어야 합니다. 예를 들어, 카탈로그에 연결된 리소스 기반 정책의 경우 클러스터 인스턴스의 기본 서비스 역할 역할을 ARN 지정할 수 있습니다. EC2 EMR_EC2_DefaultRole 다음과 같이Principal, 다음 예제에 표시된 형식을 사용합니다.

arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole

The acct-id AWS Glue 계정 ID와 다를 수 있습니다. 이렇게 하면 다른 계정의 EMR 클러스터에서 액세스할 수 있습니다. 각각 다른 계정에서 여러 보안 주체를 지정할 수 있습니다.

AWS Glue 데이터 카탈로그 사용 시 고려 사항

Presto에서 AWS Glue Data Catalog를 메타스토어로 사용할 때는 다음 항목을 고려하십시오.

  • AWS Glue 내에서 테이블 이름을 바꾸는 것은 지원되지 않습니다.

  • LOCATION을 지정하지 않고 Hive 테이블을 생성하면 테이블 데이터가 hive.metastore.warehouse.dir 속성을 통해 지정된 위치에 저장됩니다. 기본적으로 이 HDFS 위치는 입니다. 다른 클러스터가 테이블에 액세스해야 하는 경우, 테이블을 생성한 클러스터에 대한 적절한 권한이 없으면 실패합니다. 또한 HDFS 스토리지는 일시적이므로 클러스터가 종료되면 테이블 데이터가 손실되므로 테이블을 다시 생성해야 합니다. AWS Glue를 사용하여 Hive 테이블을 생성할 때는 Amazon LOCATION S3에서 a를 지정하는 것이 좋습니다. 또는 hive-site 구성 분류를 사용하여 모든 Hive 테이블에 적용되는 Amazon S3에서 hive.metastore.warehouse.dir에 대한 위치를 지정할 수도 있습니다. 특정 HDFS 위치에 테이블이 생성되고 테이블을 생성한 클러스터가 계속 실행 중인 경우 AWS Glue 내에서 테이블 위치를 Amazon S3로 업데이트할 수 있습니다. 자세한 내용은 Glue 개발자 가이드의 AWS Glue 콘솔에서 테이블 작업을 참조하십시오.AWS

  • 따옴표와 아포스트로피가 포함된 파티션 값은 지원되지 않습니다(예: PARTITION (owner="Doe's").).

  • 열 통계는 emr-5.31.0 이상에서 지원됩니다.

  • Hive 권한 부여 사용은 지원되지 않습니다. 대안으로 AWS Glue 리소스 기반 정책 사용을 고려합니다. 자세한 내용은 Amazon EMR Access to AWS Glue 데이터 카탈로그에 대한 리소스 기반 정책 사용을 참조하십시오.