BLOG

AWS Glue Data Catalog를 사용하여 Amazon EMR에서 Presto를 실행하기 위한 테이블 메타데이터를 손쉽게 관리하기
작성일: 2018-03-23

Amazon EMRApache Spark, Apache HBase, Presto Apache Flink과 같은 널리 사용되는 분산 프레임워크를 사용하여 많은 고객이 빅 데이터 처리 애플리케이션을 빠르고 비용 효율적으로 구축하도록 지원합니다. Amazon EMR를 기반으로 분석 애플리케이션을 만들고 있는 조직의 경우, 데이터 자산을 자동으로 정리해야 할 필요성이 증가하고 있습니다. 데이터세트는 기하급수적으로 증가하는 경향이 있기 때문에 카탈로그 툴을 사용하는 것은 데이터 검색을 자동화하고 데이터 자산을 구성하는 데 필수적입니다. AWS Glue Data Catalog는 이러한 필수 기능을 제공하므로 중앙 저장소에서 데이터 저장소에 대한 메타데이터를 자동으로 검색하고 카탈로그로 만들 수 있습니다. Amazon EMR 5.8.0 이후로, 고객들은 AWS Glue Data Catalog을 Amazon EMR에서 실행되는 Apache Hive 및 Spark SQL 애플리케이션을 위한 메타데이터 저장소로 사용해 왔습니다. Amazon EMR 5.10.0부터 AWS Glue를 사용하여 데이터세트의 카탈로그를 만들고 Hue(하둡 사용자 환경)의 Amazon EMR 및 Apache Zeppelin UIs에서 Presto를 사용하여 쿼리를 실행할 수 있습니다.

 

Amazon EMR에서 실행되는 Presto를 사용하는 시나리오와 Amazon Athena(Athena에서 실행되는 Presto에 대한 설명)를 선택하는 시나리오가 궁금할 수 있습니다. 이 두 가지 기능 모두 방대한 양의 데이터를 쿼리하고 다양한 요구와 사용 사례를 처리하는 데 탁월한 툴입니다.

 

Amazon Athena는 어떤 서버를 설정하거나 관리할 필요 없이 Amazon S3의 데이터에 대해 대화형 쿼리를 실행할 수 있는 가장 쉬운 방법을 제공합니다. Amazon EMR에서 실행하는 Presto 경우에는 쿼리를 구성 및 실행하는 방법에 있어 훨씬 더 유연한 기능을 제공하므로, 필요한 경우 다른 데이터 소스에 통합할 수 있습니다. 예를 들어 Presto CLI 또는 JDBC/ODBC 드라이버와 같은 클라이언트에 대한 LDAP 인증이 필요한 사용 사례가 있을 수 있습니다. 또는 MySQL/Amazon/Amazon Redshift/Apache Cassandra 및 Hive와 같은 다른 시스템 간에 데이터를 결합해야 하는 워크플로도 있을 수 있습니다. 이러한 예에서, Amazon EMR에서 실행되는 Presto는 클러스터 시작 시 원하는 데이터베이스 연결장치와 함께 LDAP 인증을 사용하도록 구성할 수 있기 때문에 사용하기에 적합한 도구입니다.
이제, Presto를 위한 메타데이터 관리가 AWS Glue에서 어떻게 작동하는지 살펴보겠습니다.

 

데이터세트를 검색하기 위해서 AWS Glue 크롤러를 사용하기
AWS Glue Data Catalog는 데이터세트의 위치, 스키마 및 런타임 메트릭을 나타냅니다. 이 참조 메타데이터를 만들려면, AWS Glue에 데이터세트을 크롤할 필요가 있습니다. 이 연습에서는 AWS Glue 크롤러를 사용하여 NYC 택시 승차 데이터세트의 데이터 카탈로그에 테이블을 채웁니다.

 

다음은 크롤러를 추가하기 위한 단계입니다.

 

  1. AWS 관리 콘솔에 로그인하고 AWS Glue 콘솔을 엽니다. 탐색 창에서 크롤러를 선택합니다. 그런 다음 크롤러 추가를 선택합니다.
  2. 데이터 스토어 추가 페이지에서 NYC 택시 승차 데이터세트의 위치를 지정하십시오.

 

  1. 다음 단계에서 IAM 역할이 사용 가능한 경우 기존의 역할을 선택하거나 새 역할을 생성합니다. 그런 후 다음을 누릅니다.

 

  1. 예약 페이지에서 빈도에 대해 요청 시 실행을 선택하십시오.
  2. 크롤러 출력 구성 페이지에서 데이터베이스 추가를 선택합니다. blog-db를 데이터베이스 이름으로 지정합니다. (선택한 이름을 지정할 수 있지만 쿼리를 실행할 때는 올바른 데이터베이스 이름을 선택해야 합니다.)
  3. 기본 값을 사용하여 나머지 단계를 수행하여 크롤러를 생성합니다.

 

  1. 크롤러가 준비 상태를 표시하면 데이터베이스로 이동하세요(데이터베이스 목록에서 blog-db를 선택하거나 다음 스크린 샷과 같이 필터로 지정하여 검색하십시오.).테이블을 선택합니다. 다음과 같이 크롤러가 작성한 세 개의 표를 확인할 수 있습니다.

 

  1. (선택 사항)검색된 데이터는 CSV 파일로 분류됩니다. 원하는 경우 쿼리에 대한 응답 시간을 높이기 위해 이 데이터를 Parquet 형식으로 변환할 수 있습니다.

 

Amazon EMR 클러스터 시작
검색 및 정리된 데이터세트를 사용하면 이제 Amazon EMR 클러스터에서 Presto를 시작하기 위한 다양한 옵션을 탐색하여 AWS Glue Data Catalog를 사용할 수 있습니다.

 

옵션 1: Amazon EMR 콘솔에서

 

  1. Amazon EMR 콘솔에서 클러스터 생성을 선택하십시오.
  2. 클러스터 생성Quick Options에서 EMR Release 10.0 이상을 선택합니다.
  3. Presto를 응용 프로그램으로 선택하십시오.
  4. AWS Glue Data Catalog 설정에서 Presto 테이블 메타데이터 사용을 선택합니다.

 

옵션 2: AWS CLI 사용

 

  1. 다음과 같이 분류 구성을 생성하고 JSON 파일 (presto-emr-config.json) 로 저장하십시오.
  1. 다음과 같이 AWS CLI를 사용하여 클러스터를 생성합니다.

aws emr create-cluster –name “<your-cluster-name>” –configurations file:///<local-folder>/presto-emr-config.json –release-label emr-5.10.0 –use-default-roles –ec2-attributes KeyName=<your-key-name> –applications Name=Hadoop Name=Spark Name=Hive Name=PRESTO Name=HUE –instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=3,InstanceType=m3.xlarge

 

Amazon EMR에서 Presto를 사용하여 쿼리 실행
Presto를 사용하여 Amazon EMR 클러스터를 설정한 후에는 AWS Glue Data Catalog을 기본 “hive” 카탈로그에서 사용할 수 있습니다. Hive와 Glue 메타스토지리 사이에서 변경하기 위해서는, 수동으로 hive.특성을 업데이트하고 Presto 서버를 다시 시작해야 합니다. SSH를 사용하여 EMR 클러스터의 마스터 노드에 연결하고 Presto CLI를 실행하여 대화형으로 쿼리 실행을 시작하십시오.

 

 

 

몇 개의 행을 샘플링하는 간단한 쿼리로 시작합니다.

 

 

 

조회에는 다음과 같은 몇 개의 샘플 행이 표시됩니다.

 

 

 

하루 중 각 시간과 한 달 중 각 날짜의 이동에 대한 평균 요금을 택시 데이터세트의 Parquet 버전에 대해 쿼리합니다.

 

 

다음 이미지는 결과를 보여 줍니다.

 

 

 

더 흥미로운 것은 10%, 15%이상 백분율 범위에서 팁을 제공한 이동 횟수를 계산할 수 있다는 점입니다.

 

presto> — Tip Percent Category

SELECT TipPrctCtgry

, COUNT (DISTINCT TripID) TripCt

FROM

(SELECT TripID

, (CASE

WHEN fare_prct < 0.7 THEN ‘FL70’

WHEN fare_prct < 0.8 THEN ‘FL80’

WHEN fare_prct < 0.9 THEN ‘FL90’

ELSE ‘FL100’

END) FarePrctCtgry

, (CASE

WHEN tip_prct < 0.1 THEN ‘TL10’

WHEN tip_prct < 0.15 THEN ‘TL15’

WHEN tip_prct < 0.2 THEN ‘TL20’

ELSE ‘TG20’

END) TipPrctCtgry

 

FROM

(SELECT TripID

, (fare_amount / total_amount) as fare_prct

, (extra / total_amount) as extra_prct

, (mta_tax / total_amount) as tip_prct

, (tolls_amount / total_amount) as mta_taxprct

, (tip_amount / total_amount) as tolls_prct

, (improvement_surcharge / total_amount) as imprv_suchrgprct

, total_amount

FROM

(SELECT *

 , (cast(pickup_longitude AS VARCHAR(100)) || ‘_’ || cast(pickup_latitude AS VARCHAR(100))) as TripID

 from “blog-db”.taxi_parquet

 WHERE total_amount > 0

 ) as t

) as t

) ct

GROUP BY TipPrctCtgry;

 

그 결과는 다음과 같습니다.

 

 

이전 쿼리가 실행 중인 동안 <http://master-public-dns-name:8889/에서 Amazon EMR에서 Presto에 대한 웹 인터페이스로 이동합니다. 여기서 활성 작업자 노드, 초당 읽은 행의 수, 예약된 메모리 및 병렬과 같은 쿼리 메트릭을 살펴볼 수 있습니다.

 

 

 

Hue의 Presto Editor에서 쿼리 실행
아마존 EMR 시작에 Hue를 설치한 경우, Hue의 Presto Editor에서 쿼리를 실행할 수도 있습니다. Amazon EMR Cluster 콘솔에서 웹 연결 사용을 선택하고, Hue 및 Zeppelin에 대한 웹 인터페이스에 액세스 하기 위한 지침을 따르십시오.

 

 

웹 연결이 활성화된 후, Hue 링크를 선택하여 웹 인터페이스를 엽니다. 로그인 화면에서 관리자가 처음 로그인하는 경우 사용자 이름과 암호를 입력하여 Hue superuser 계정을 생성합니다. 그런 다음 계정 생성을 선택합니다. 그렇지 않은 경우 사용자 이름과 암호를 입력하고 계정생성을 선택하거나 관리자가 제공한 자격 증명을 입력합니다.

 

 

메뉴에서 Presto Editor를 선택합니다. AWS Glue Data Catalog에서 테이블에 대해 Presto 쿼리를 실행할 수 있습니다.

 

 

결론
Amazon EMR에 애플리케이션을 위한 공유 데이터 카탈로그가 있어 검색, 관리, 감사, 협조 등과 같은 현재 발생하는 수많은 데이터 관련 문제를 해결할 수 있습니다. 이 포스트에서는 AWS Glue Data Catalog가 Amazon EMR에서 Presto에 대한 테이블 메타데이터의 검색 및 관리 용이성을 어떻게 해결하는지 알아보았습니다. 어서, 한번 해 보시고, 여러분의 경험을 저희와 공유하세요!

 

원문 URL: https://aws.amazon.com/ko/blogs/big-data/easily-manage-table-metadata-for-presto-running-on-amazon-emr-using-the-aws-glue-data-catalog/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.