이야기박스

AWS Glue - 이론 본문

Computer & Data/Cloud Platform

AWS Glue - 이론

박스님 2019. 1. 29. 14:23
반응형

AWS Data Pipeline 포스팅의 첫 시작을 AWS Glue로 하려고 합니다.

이번 포스팅에서는 제가 Glue를 사용하며 공부한 내용을 정리하였고 다음 포스팅에서는 Glue의 사용 예제를 정리하여 올리겠습니다.

AWS Glue란?

AWS Glue는 Cloud Spark ETL Service로서 몇가지 특징을 가지고 있습니다.


[ 특징 ]

- Serverless 기반

- crawler 통한 자동 스키마 검색

- 통합 데이터 카탈로그 제공

- 개발용 엔드 포인트 및 노트북 제공

- Scala, Python 언어 및 Apache Spark용 ETL Job 코드 생성 및 스케줄 실행


Serverless 기반이기 때문에, Job을 돌리기 위해서 Cold Start 단계가 존재합니다. 이 시간에는 과금이 되지 않는다고 하네요.

대신 부팅까지 시간이 꽤 걸립니다.  저 같은 경우는 AWS Singapore Region에서 테스트를 진행하였는데, 한 5~10분 정도 소요되더라구요. 그래도 테스트를 반복하다보니 캐싱이 되는 것인지 점점 Cold Start 시간이 감소되었습니다.


Glue에는 Crawler & Data Catalog 기능이 탑재되어 있습니다. 개인적으로 Glue의 기능 중 가장 마음에 드는 기능이네요.

Crawler로 연결된 DataSource를 통하여 해당 스키마를 추출하고 Data Catalog가 이를 관리해줍니다. Partition, Version 관리도 해주기 때문에 잘 사용한다면 정말 편리한 기능이 될 것 같아요.


Dev End Point & Notebook 제공은 써보지 않아서 잘 모르겠네요.. 

ETL 과정부터 지표 확인까지 한번에 할 수 있는 환경 구성을 도와주는 것 같습니다. (정확하지는 않아요)


Apache Spark 기반이다보니 Python, Scala로 Job Script를 구성할 수 있도록 되어 있습니다. 그렇지만 개인적으로 Java도 지원해줫으면 정말 좋았을 것 같네요..



< Glue Architecture >




위 아키텍처에서 보는바와 같이 Glue의 서비스는 ( Data Catalog | ETL ) 두 부분으로 나눌 수 있습니다. 해당 구성 요소들의 특징은 다음과 같습니다.

구성 요소 설명

[ 데이터 카탈로그 ]

(Hive MetaStore) + (alpha) 의 기능을 가지고 있다고 생각하시면 될 것 같습니다.

AWS의 다른 프로젝트에서도 통합적으로 사용이 가능한 것 같네요. AWS Athena도 이 Catalog를 통하여 스키마를 얻어 쿼리를 쓰게 됩니다.

주요 기능은 다음과 같습니다.


- Search : 메타데이터 검색

- Connection Info - JDBC URLs, credentials 등

- Classification : 파일 식별 및 파싱

- Versioning : 스키마 변경, 다른 메타 데이터 업데이트 관리


데이터 카탈로그 또한 하나의 데이터베이스로 구성되어 있습니다. Database가 있고 그 아래에 Table이 있죠. 

Data Source가 주어진다면 Classification가 이를 식별하여 스키마를 추출 후, Catalog Database / Table을 생성합니다. (여러 스키마의 파일이 있다면 Classification이 이를 알아서 구별하여 만들어줍니다)

여기서 Data Source는 S3, JDBC 등 다양하게 이용될 수 있습니다. 해당 정보들은 Connection Info로 Data Catalog에 남게 됩니다.


이렇게 생성된 카탈로그의 Search 기능을 Glue에서 지원해주고 있습니다. (Classification, Database, Table Name, Location, Date info ... ) 등을 필터로 이용하여 손쉬운 검색 기능을 제공하고 있습니다.


데이터 카탈로그의 가장 핵심 기능은 스키마의 Versioning가 된다는 점입니다. Data Source의 스키마가 변환되어도 자동으로 버전 관리를 해줍니다. 저 같은 경우는 컬럼 삭제/추가 하면서 테스트 해봤는데 잘 동작해서 아주 만족했던 기억이 있습니다. 


조금 아쉬운 점은 컬럼 삭제를 한 경우, 스키마 순서가 기존 입력된 순서로 주어지는 것이 아니라 ( 현재 스키마 ) - ( 제거된 스키마 ) 의 우선 순위로 정해진다는 점입니다.


예를 들어

1) col(a, b, c) ==> schema (a, b, c)

2) col(a, c) ==> schema (a, c, b)

3) col(a, c, d) ==> schema (a, c, d, b)


이런식으로 운영됩니다. 

하지만 다른 기능은 매우 만족스러우므로 AWS를 이용한다면 데이터 카탈로그를 적극 이용하시는 것을 추천드립니다!


< Data Catalog Overview >




[ ETL ]

Glue ETL은 다음과 같이 구성되어 있습니다.

- Jobs

- Triggers

- Dev endpoints


Job

Jobs의 경우는 python/scala script를 통해 동작하게 됩니다. 또한, 해당 스크립트들은 모두 스파크를 기반으로 작성되어 있습니다.

스크립트는 Glue UI를 통하여 손쉽게 작성할 수 있게 해주고 있습니다. 


(

하지만, 커스터마이징이 필요하다면 Native Spark 코드를 이용하여 ETL을 하는것을 권유드립니다.
아직 많이 불편하더라구요... 
저 같은 경우는 Source는 Native / Transform & Sink의 경우만 Glue Library를 사용하였습니다.


Spark DataFrame ---> Glue DynamicFrame으로 변환이 가능하더라구요.


좀 더 자세한 내용은 다음 포스팅에서 작성하도록 하겠습니다.

)


Triggers

아직 안써봤습니다.. 


Dev endpoints

제플린과 연동이 가능한 것 같은데, 마찬가지로 아직 안써보았습니다.

간단 후기

Data Catalog는 좋다 !!
ETL은 Spark 기반이기 때문에 어느정도 커스터마이징이 가능하다 !!

참고

AWS 공식 가이드

AWS Glue Partitioning


git 가이드

이슈 참고

DynamicFrame Filtering issue


상용툴

DirectData ( Partitioning, Source 관리 )

반응형

'Computer & Data > Cloud Platform' 카테고리의 다른 글

GCP 설계 & 디자인  (0) 2019.04.04
GCP 교육 2일차 - DataFlow  (0) 2019.02.20
GCP 교육 2일차 - BigQuery  (0) 2019.02.20
AWS Cli 설치  (0) 2019.02.19
GCP 교육 1일차  (0) 2019.02.19