Category: AWS Glue*


Amazon S3 및 AWS Glue를 이용한 데이터 레이크 구축하기

데이터 레이크(Data Lake)는 다양한 유형의 대량 데이터를 처리해야 하는 과제를 해결하는 데이터 저장 및 분석 방법으로서 점차 인기를 얻고 있습니다. 데이터 레이크를 사용하면 모든 데이터(정형 및 비정형)를 중앙 집중식 리포지토리 한 곳에 저장할 수 있습니다. 데이터를 있는 그대로 저장할 수 있으므로 데이터를 사전 정의된 스키마로 변환할 필요가 없습니다.

많은 기업들은 데이터 레이크에서 Amazon S3를 사용하는 데 따르는 이점을 잘 알고 있습니다. 예를 들어, 스토리지를 컴퓨팅과 분리한 상태에서 오픈 데이터 형식을 지원하는 Amazon S3는 매우 내구력 있는 경제적 객체 시작점으로서 모든 AWS 분석 서비스와 연동됩니다. Amazon S3는 데이터 레이크의 토대이지만, 다른 서비스를 추가하여 업무상 필요에 맞게 데이터 레이크를 조정할 수 있습니다. AWS를 기반으로 데이터 레이크를 구축하는 방법에 대한 자세한 내용은 데이터 레이크란 소개를 참조하십시오.

데이터 레이크를 사용하는 데 따른 주요 과제 중 하나는 데이터를 찾고 스키마와 데이터 형식을 이해하는 것이므로 Amazon은 최근에 AWS Glue를 도입했습니다. AWS Glue를 사용하면 데이터의 구조와 형식을 검색하여 Amazon S3 데이터 레이크로부터 신속하게 비즈니스 통찰을 이끌어 내는 데 필요한 시간과 노력을 획기적으로 줄일 수 있습니다. 이 서비스는 자동으로 Amazon S3 데이터를 크롤링하여 데이터 형식을 식별한 후 다른 AWS 분석 서비스에 사용할 스키마를 제안합니다.

이 게시물에서는 AWS Glue를 사용하여 Amazon S3에서 데이터를 크롤링하고 다른 AWS 제품군에서 사용 가능한 메타데이터 저장소를 구축하는 과정을 안내합니다.

AWS Glue 기능

AWS Glue는 까다롭고 시간이 많이 소요되는 데이터 검색, 변환, 작업 일정 조정 등과 같은 작업은 간소화 및 자동화하는 종합 관리형 데이터 카탈로그 및 ETL(추출, 변환, 로드) 서비스입니다. AWS Glue는 데이터 소스를 크롤링하고 CSV, Apache Parquet, JSON 등을 비롯한 널리 사용되는 데이터 형식과 데이터 유형에 대해 사전 구축된 분류자를 사용하여 데이터 카탈로그를 생성합니다.

AWS Glue는 최신 데이터 아키텍처의 핵심 구성 요소인 Amazon S3, Amazon RDS, Amazon Athena, Amazon RedshiftAmazon Redshift Spectrum과 통합되어 있으므로 데이터 이동과 관리를 원활하게 조율할 수 있습니다.

AWS Glue 데이터 카탈로그는 Apache Hive 메타스토어와 호환되며 Hive, Presto, Apache Spark, Apache Pig 등 널리 사용되는 도구를 지원합니다. 또한 Amazon Athena, Amazon EMR 및 Amazon Redshift Spectrum과 직접 통합됩니다.

이와 함께 AWS Glue 데이터 카탈로그는 사용 편의성과 데이터 관리 기능을 지원하기 위해 다음과 같은 확장을 제공합니다.

  • 검색을 통해 데이터 찾기
  • 분류를 통해 파일 식별 및 구문 분석
  • 버전 관리를 통해 변화하는 스키마 관리

자세한 내용은 AWS Glue 제품 세부 정보를 참조하십시오.

Amazon S3 데이터 레이크

AWS Glue는 Amazon S3 데이터 레이크의 필수 구성 요소이며, 최신 데이터 분석을 위한 데이터 카탈로그 및 변환 서비스를 제공합니다.

이전 그림에는 다양한 분석 사용 사례에 대한 데이터가 준비되어 있습니다. 처음에는 변경 불가능한 원본 형식으로 데이터를 수집합니다. 그런 다음 데이터를 변환하고 보강하여 각 사용 사례에 유용하게 만들 수 있습니다. 이 예에서는 원시 CSV 파일을 Amazon Athena에서 사용할 수 있는 Apache Parquet으로 변환합니다. Amazon Athena에서 변환된 데이터를 사용하여 성능을 높이고 비용을 절감할 수 있습니다.

또한 다른 데이터 세트와 결합하는 방식으로 데이터를 보강하여 추가적인 통찰력을 얻을 수 있습니다. AWS Glue 크롤러는 작업 트리거 또는 사전 정의된 일정에 따라 데이터 단계별로 테이블을 생성합니다. 이 예에서는 AWS Lambda 함수를 사용하여 원시 데이터 S3 버킷에 새 파일이 추가될 때마다 ETL 프로세스를 트리거합니다. 이 테이블을 사용하면 Amazon Athena, Amazon Redshift Spectrum 및 Amazon EMR에서 표준 SQL 또는 Apache Hive를 사용하여 모든 단계의 데이터를 쿼리할 수 있습니다. 이 구성은 민첩한 비즈니스 인텔리전스를 제공하여 다양한 데이터로부터 빠르고 쉽게 비즈니스 가치를 창출하는 인기 설계 패턴입니다.

직접 실습하기

이 연습에서는 데이터베이스 정의, Amazon S3 버킷에서 데이터를 탐색하도록 크롤러 구성, 테이블 생성, Parquet으로 CSV 파일 변환, Parquet 데이터에 대한 테이블 생성, Amazon Athena를 사용하여 데이터 쿼리 등과 같은 작업을 연습합니다.

데이터 검색

AWS Management Console에 로그인하고 AWS Glue 콘솔을 엽니다. [Analytics] 섹션에서 AWS Glue를 찾을 수 있습니다. AWS Glue는 현재 미국 동부(버지니아), 미국 동부(오하이오) 및 미국 서부(오레곤) 지역에서 사용 가능합니다. 다른 AWS 지역이 수시로 추가됩니다.

데이터를 검색하려면 먼저 데이터베이스를 추가해야 합니다. 데이터베이스는 다수의 테이블로 구성된 집합입니다.

  1. 콘솔에서 [Add database]를 선택합니다. [Database name]에 nycitytaxi를 입력하고 [Create]를 선택합니다.
  2. 탐색 창에서 [ Tables]를 선택합니다. 테이블은 열 이름, 데이터 유형 정의, 데이터 세트에 대한 기타 메타데이터로 구성됩니다.
  3. nycitytaxi 데이터베이스에 테이블을 추가합니다. 크롤러를 사용하거나 수동으로 테이블을 추가할 수 있습니다. 크롤러는 데이터 스토어에 연결하여 분류자의 우선 순위 지정 목록을 통해 데이터의 스키마를 결정하는 프로그램입니다. AWS Glue는 CSV, JSON, Avro 등과 같은 일반 파일 형식에 대한 분류자를 제공합니다. grok 패턴을 사용하여 고유한 분류자를 작성할 수도 있습니다.
  4. 크롤러를 추가하려면 데이터 원본을 입력합니다(Amazon S3 버킷 즉, s3://aws-bigdata-blog/artifacts/glue-data-lake/data/). 이 S3 버킷에는 2017년 1월 한 달 동안의 녹색 택시에 대한 모든 승차 정보로 구성된 데이터 파일이 포함되어 있습니다.
  5. [Next]를 선택합니다.
  6. [IAM role]에 대한 드롭다운 목록에서 기본 역할 AWSGlueServiceRoleDefault를 선택합니다.
  7. [Frequency]에서 [Run on demand]를 선택합니다. 크롤러를 온디맨드로 실행하거나 일정에 따라 실행하도록 설정할 수 있습니다.
  8. [Database]에서 nycitytaxi를 선택합니다. 적절한 방법을 선택하려면 AWS Glue에서 스키마 변경을 처리하는 방법을 잘 알고 있어야 합니다. 이 예에서는 테이블을 변경 사항으로 업데이트합니다. 스키마 변경에 대한 자세한 내용은 AWS Glue 개발자 안내서에서 크롤러를 사용하여 테이블 카탈로그 작성을 참조하십시오.
  9. 단계를 검토하고 [Finish]를 선택합니다. 크롤러를 실행할 준비가 되었습니다. [Run it now]를 선택합니다.

    크롤러가 종료되면 테이블 한 개가 추가되었습니다.
  10. 왼쪽 탐색 창에서 [Tables]를 선택한 다음 [data]를 선택합니다. 이 화면에서는 스키마, 속성 및 기타 중요한 정보를 비롯한 테이블에 대해 설명합니다.

CSV에서 Parquet 형식으로 데이터 변환

이제 CSV에서 Parquet로 데이터를 변환하는 작업을 구성하여 실행할 수 있습니다. Parquet는 Amazon Athena 및 Amazon Redshift Spectrum과 같은 AWS 분석 서비스에 적합한 컬럼 형식입니다.

  1. 왼쪽 탐색 창에서 [ETL]을 선택하고 [Jobs]를 선택한 다음 [Add job]을 선택합니다.
  2. [Name]에 nytaxi-csv-parquet를 입력합니다.
  3. [IAM role]에서 AWSGlueServiceRoleDefault를 선택합니다.
  4. [This job runs]에서 [A proposed script generated by AWS Glue]를 선택합니다.
  5. 스크립트를 저장할 고유한 Amazon S3 경로를 제공합니다.
  6. 임시 디렉터리에 대한 고유한 Amazon S3 디렉터리를 제공합니다.
  7. [Next]를 선택합니다.
  8. 데이터 원본에서 [data]를 선택합니다.
  9. [Create tables in your data target]을 선택합니다.
  10. [Parquet]를 형식으로 선택합니다.
  11. 결과를 저장할 새 위치(기존 객체가 없는 새 접두사 위치)를 선택합니다.
  12. 스키마 매핑을 확인하고 [Finish]를 선택합니다.
  13. 작업을 확인합니다. 이 화면에서는 전체 작업 보기를 제공하며 작업을 편집, 저장 및 실행할 수 있습니다. AWS Glue에서 이 스크립트를 생성했습니다. 필요한 경우 스크립트를 직접 생성할 수 있습니다.
  14. [Save]를 선택한 다음 [Run job]을 선택합니다.

Parquet 테이블 및 크롤러 추가

작업이 완료되면 크롤러를 사용하여 Parquet 데이터에 대한 새 테이블을 추가합니다.

  1. [Crawler name]에 nytaxiparquet를 입력합니다.
  2. S3를 [Data store]로 선택합니다.
  3. [ETL]에서 선택한 Amazon S3 경로 포함
  4. [IAM role]에서 AWSGlueServiceRoleDefault를 선택합니다.
  5. [Database]에 대해 nycitytaxi를 선택합니다.
  6. [Frequency]에서 [Run on demand]를 선택합니다.

크롤러가 완료되면 nycitytaxi 데이터베이스에 두 개의 테이블이 있습니다. 즉, 원시 CSV 데이터용 테이블 한 개와 변환된 Parquet 테이블 한 개가 있습니다.

Amazon Athena를 사용하여 데이터 분석

Amazon Athena는 표준 SQL을 사용해 Amazon S3에 저장된 데이터를 간편하게 분석할 수 있는 대화식 쿼리 서비스입니다. Athena를 사용하여 CSV 데이터를 쿼리할 수 있습니다. 하지만 Parquet 파일 형식을 사용하면 데이터를 쿼리하는 데 필요한 시간과 비용을 획기적으로 줄일 수 있습니다. 자세한 내용은 Analyzing Data in Amazon S3 using Amazon Athena 블로그 게시물을 참조하십시오.

AWS Glue를 Amazon Athena와 함께 사용하려면 Athena 데이터 카탈로그를 AWS Glue 데이터 카탈로그로 업그레이드해야 합니다. Athena 데이터 카탈로그를 업그레이드하는 방법에 대한 자세한 내용은 이 단계별 지침을 참조하십시오.

    1. Athena용 AWS Management Console을 엽니다. 쿼리 편집기에 nycitytaxi의 두 테이블이 표시됩니다.

표준 SQL을 사용하여 데이터를 쿼리할 수 있습니다.

  1. nytaxigreenparquet를 선택합니다.
  2. 유형 "nycitytaxi"에서 *를 선택합니다."data" limit 10;
  3. [Run Query]를 선택합니다.

마무리

이 게시물에서는 AWS Glue 및 Amazon S3를 사용하여 데이터 레이크의 기초를 얼마나 쉽게 구축할 수 있는지를 보여 줍니다. AWS Glue를 사용하여 Amazon S3에서 데이터를 크롤링하고 Apache Hive 호환 메타데이터 저장소를 구축하면 AWS 분석 서비스와 주요 Hadoop 에코시스템 도구를 통해 메타데이터를 사용할 수 있습니다. 이 AWS 서비스 조합은 강력하고 간편하며 비즈니스 통찰을 더 빠르게 얻을 수 있도록 해줍니다.

자세한 내용은 다음 블로그 게시물을 참조하십시오.

작성자 소개

Gordon Heinrich는 글로벌 SI(Systems Integrator)로 활동 중인 솔루션 아키텍트이며, 파트너 및 고객과 협력하여 데이터 레이크를 구축하고 AWS 분석 서비스를 사용하는 데 유용한 설계 지침을 제공합니다. 여가 시간에는 가족과 함께 시간을 보내거나 콜로라도에서 스키, 하이킹, 산악 자전거 등을 즐깁니다.

이 글은 AWS BigData 블로그의 Build a Data Lake Foundation with AWS Glue and Amazon S3의 한국어 버전입니다.

AWS Glue 정식 출시 – 완전 관리형 ETL 서비스

오늘 AWS Glue 서비스가 정식 출시되었습니다. AWS Glue는 완전 관리형, 서버리스 기반 클라우드 데이터 추출, 변환 및 로드 (ETL) 서비스입니다. 이 서비스는 몇 가지 매우 중요한 방식으로 다른 ETL 서비스 및 소프트웨어 플랫폼과 다릅니다.

첫째, Glue는 “서버가 필요하지 않습니다.” 어떤 인프라 자원도 프로비저닝하거나 관리 할 필요가 없으며, Glue 실행될 때만 비용을 지불합니다. 둘째, Glue는 많은 데이터 소스, 데이터 유형 및 다양한 유형의 파티션에서 스키마를 자동으로 감지하고 추론 할 수 있는 크롤러를 제공합니다. 편집, 버전 관리, 질의 및 분석을 위해 이러한 생성 된 스키마를 중앙 데이터 카탈로그에 저장합니다. 셋째, Glue는 자동으로 ETL 스크립트 (Python 기반)를 생성하여 원본 형식의 데이터를 대상 형식으로 변환합니다. 마지막으로, Glue를 사용하면 개발자가 자신이 선호하는 도구를 사용하여 ETL 스크립트로 엔드 포인트를 만들 수 있습니다. 자, 실제 예제를 살펴 보도록 합시다.

Crawlers

먼저 Amazon S3의 항공편 데이터에 대한 크롤러를 만들어야 합니다.  Glue 콘솔에서 Crawlers를 선택하고 거기에서 온 스크린 프롬프트를 따릅니다. 첫 번째 데이터 소스로 s3://crawler-public-us-east-1/flight/2016/csv/를 지정할 것입니다 (필요할 경우 나중에 추가 할 수 있습니다). 다음으로 flight라고 하는 데이터베이스를 만들고 테이블에 항공편의 접두어도 지정합니다.

크롤러는 데이터 세트를 거쳐 다양한 폴더(이 경우에는 일년 데이터)를 통해 파티션과 스키마를 감지하며 테이블을 만듭니다. 추가 데이터 소스와 작업을 크롤러에 추가하거나 데이터를 동일한 데이터베이스로 푸시하는 별도의 크롤러를 만들 수 있지만 자동 생성 된 스키마를 살펴 보겠습니다.

BIGINT에서 INT로 이동하여 일년으로 빠르게 스키마를 변경하려고 합니다. 필요한 경우 스키마의 두 버전을 비교할 수 있습니다.

이제 데이터를 올바르게 구문 분석하는 방법을 알게 되었으므로, 필요한 변경을 할 수도 있습니다.

ETL Jobs
이제 작업 하위 콘솔로 이동하여 Add Job를 클릭합니다.  이름을 설정하고, 데이터 소스를 선택한 후, 임시 파일을위한 S3 위치를 묻는 메시지를 따릅니다. 다음으로 “Create tables in your data target”를 지정하여 타겟을 추가하고, Parquet format으로 S3 위치를 목표로 지정합니다.

다음을 클릭하면 Glue가 제안한 다양한 매핑을 보여주는 화면이 나타납니다. 이제는 필요에 따라 수동으로 열을 조정할 수 있습니다.이 경우에는 X 버튼을 사용하여 필요 없는 열 몇 개를 제거합니다.

이를 통해 개발자에게 유용한 부분으로 넘어갈 수 있습니다.


Glue는 PySpark 스크립트를 생성하여 지금까지 제공 한 정보를 기반으로 데이터를 변환합니다. 왼쪽에는 ETL 작업의 흐름을 보여주는 다이어그램이 있습니다. 오른쪽 상단에는 주석이 달린 데이터 소스와 대상 등 기타 기능을 추가하는 데 사용할 수 있는 몇 가지 버튼이 있습니다. 이것은 transform을 클릭하면 얻을 수 있는 인터페이스입니다.

데이터 변환 또는 추가 데이터 소스를 추가하면, Glue가 왼쪽에 있는 다이어그램을 업데이트하여 데이터 흐름을 효과적으로 시각화 합니다. 또한, 원하는 코드를 콘솔에 작성하여 실행할 수도 있습니다. 현재 작업에 다른 작업, 일정 또는 작업 완료시 트리거를 추가 할 수 있습니다. 이를 통해, 더 많은 항공편 데이터를 추가 할 수 있어 동일한 데이터를 S3 형식으로 다시 읽어올 수 있습니다.

여기서 ETL 작업을 코드로 저장하는 방식의 장점을 잠깐 살펴 봅니다. 프로그램 코드는 쉽게 변경 혹은 테스트 가능하며 버전을 통해 다양한 사람이 공유할 수 있습니다. 개발자들은 매일 코드를 작성하기 때문에, 손쉽게 데이터 처리를 위한 코드를 만들어 효율적으로 활용 가능합니다.

개발용 엔드 포인트 및 노트북(Notebooks)

개발용 엔드포인트는 Glue 스크립트를 개발하고 테스트하는 데 사용되는 환경입니다. Glue 콘솔에서 “Dev endpoints”로 이동하면 오른쪽 상단의 “Add endpoint”를 클릭하여 시작할 수 있습니다. 그런 다음 자체를 참조하는 보안 그룹 인 VPC를 선택하고 제공 준비가 완료 될 때까지 기다립니다.


일단 프로비저닝이 완료 되면 조치로 가서 노트북 서버 생성을 클릭하여 Apache Zeppelin 노트북 서버를 생성 할 수 있습니다.  인스턴스에 IAM 역할을 부여하고 데이터 소스와의 대화 권한이 있는지 확인합니다. 그런 다음 서버에 SSH를 연결하거나 노트북에 연결하여 스크립트를 대화식으로 개발할 수 있습니다.

비용 및 개발 문서
자세한 가격 정보는 여기에서 확인할 수 있습니다. 크롤러, ETL 작업 및 개발 엔드 포인트는 모두 DPU (Data Processing Unit Hours, 분 단위)에 청구됩니다. 각 DPU-Hour의 비용은 미국 버지니아 리전 기준 0.44 달러 입니다. 단일 DPU는 4vCPU 및 16GB의 메모리를 제공합니다.

이 글에서는 AWS  Glue가 가지고 있는 기능의 절반 만 다루었습니다.  더 자세한 사항은 기술 문서서비스 FAQ를  참고해 주시기 바랍니다. Glue에는 콘솔에서 수행 할 수 있는 모든 작업을 수행 할 수 있는 풍부하고 강력한 API가 있습니다.

또한, 오늘 두 개의 새로운 프로젝트를 발표합니다. aws-glue-libs 는 Glue와 대화하기 위한 유틸리티 세트를 제공합니다. aws-glue-samples repo에는 일련의 예제 작업이 포함되어 있습니다.

– Randall;

이 글은 Launch – AWS Glue Now Generally Available의 한국어 번역입니다.