[AWS] EMR, Athena, Glue, Lake Formation 필기
< Athena >
Athena 는 s3 버킷에 저장된 데이터 대상으로 쿼리를 날릴 수 있는 서비스
Athena 는 SQL 언어를 사용하는 Presto 엔진에 빌드됨
S3 데이터를 RDB 등에 넣지 않고도, s3 데이터 그대로 쿼리 실행이 가능
csv, json, orc, avro, parquet 등 다양한 형식으로 저장된 s3 데이터를 지원
Athena 는 Amazon QuickSight 라는 도구와 함께 사용하는 일이 많음
QuickSight 를 통해, 보고서와 대시보드를 생성함...!
Athena 를 통해, AWS 서비스에서 발생하는 모든 로그를 쿼리하고 분석 가능
Athena 성능을 향상하려면, 읽는 데이터 크기를 줄이면 됨.
열 기반 포맷인 Parquet, Orc 를 사용하면 Athena 성능이 향상됨
Parquet, Orc 를 사용하려면 Glue 를 사용해야 함
Glue 는 ETL 을 통해 csv 와 parquet 간 데이터 변환하는데 매우 유용함
성능 향상의 또 다른 방법은, 테이블을 파티션으로 나눠 저장하는 것.
예를들어
s3://mybucket/date=20240625/...
s3://mybucket/date=20240626/...
s3://mybucket/date=20240627/...
s3://mybucket/date=20240628/...
s3://mybucket/date=20240625/...
성능 향상의 다른 방법은, 큰 파일을 사용하여 오버헤드를 최소화 하는 것
크기는 작지만 수가 많은 파일들을 읽는 것보다
크기는 128mb 이상이지만 수는 적은 큰 파일들을 읽을 때 성능이 더 좋음
왜냐면 파일이 클수록 스캔과 검색이 쉽기 때문.
(HDFS 의 block size 같은 느낌인데?)
Athena 는 s3 뿐 아니라 어떤 곳의 데이터도 쿼리가 가능함
RDB, NOSQL, on premises 등 어떤 곳이든 가능
이게 어떻게 가능하냐? Data Source Connector 를 사용하면 됨
쿼리 결과는 s3 버킷에 저장 가능하다고 함
< EMR >
Elastic MapReduce 의 약자.
하둡 클러스터를 생성해 줌
EMR 은 EC2 인스턴스의 모음인 클러스터를 구성함
그리고 인스턴스들은 아래처럼 각자 역할을 부여받고 동작함
- Master Node : 클러스터를 관리하고 다른 모든 노드의 상태를 조정함. 오랫동안 실행되는 인스턴스
- Core Node : 태스크를 실행하고, 데이터를 저장함. 이것도 오랫동안 실행되는 인스턴스. cluster 에 처음부터 존재하며, cluster 가 확장될 때는 늘릴 수 있지만 줄이진 못 함.
- Task Node : 태스크를 실행함. Spot instance 사용이 가능. optional 인 노드임. Core Node 와 다른 점은, 일시적으로 데이터 처리 작업을 도와주는 노드라는 것임. (core node 가 할 수 있는 기능인)데이터를 저장하는 작업도 task node는 할 수 없음. 단지 작업 처리를 위한 cpu, ram 등의 리소스를 추가하고 분산 작업해주는 역할을 함. 필요에 따라 늘리고 줄일 수 있음
< Glue >
위에서 언급했듯, Glue 는 ETL 서비스를 관리하는 fully serverless 서비스임
분석을 위한 데이터 변환과 준비에 사용할 수 있음
사용례를 살펴보자.
S3 버킷이나 RDS 에 있는 데이터를 DW 인 Redshift 에 로드하는 경우
Glue 를 사용해 추출한 다음, 일부 데이터를 필터링하거나
열을 추가하는 등 원하는 대로 데이터를 변형할 수 있으며
그 최종 결과를 Redshift 에 저장(로드)할 수 있음
다른 사용례를 살펴보자.
Glue 는 S3 에 올라간 csv 형태의 데이터를 parquet 으로 변형하고
그 결과를 S3 에 저장할 수 있음
이후 Athena 를 통해 parquet 파일을 쿼리할 수 있음
(물론 Athena 가 csv 도 쿼리 가능하지만,
parquet 처럼 column 기반 데이터 포맷 대상으로 실행하는 쿼리 속도에서 차이가 발생함)
Glue Data Catalog 에 대해 알아보자.
Glue Data Catalog 는 datasets 의 카탈로그임.
S3, RDS, DynamoDB, JDBC 등으로부터 데이터를 크롤링 한 다음
Glue Data Catalog 에 데이터에 대한 정보(메타데이터)를 저장함
예를 들면 데이터베이스의 테이블, 열, 데이터 포맷 등등. 모든 메타데이터를 Glue Data Catalog 에 기록
이러한 메타데이터들은, Glue 의 ETL 작업에 활용됨
또한, Athena, EMR 이 데이터와 스키마를 검색할 때 백그라운드에서 Glue Data Catalog 의 데이터를 활용함
예를 들어 Athena 가 어떤 테이블의 파티션 컬럼이 무엇인지 확인할 때
Glue Data Catalog 에서 파티션 컬럼 정보를 갖고옴
(EMR 에서 데이터와 스키마 검색할 때 Data Catalog 를 사용한다고...?)
Glue 에 대해 알아야 하는 것들을 살펴보자
- Glue Job Bookmarks 는 새 ETL 작업을 실행할 때 이전 데이터의 재처리를 방지해 줌
- Glue Elastic Views 는 여러 데이터 스토어의 데이터를 (SQL 을 사용하여) 결합하고 복제함
가령 RDS 와 Aurora DB, S3 세 데이터 스토어들 내 테이블들을 SQL 을 사용하여 결합한 View 를 생성 가능함
Glue 가 원본 데이터의 변경 사항을 모니터링 한다고 함
(바로 위에서 설명했듯이) 여러 데이터 스토어에 분산된 가상 테이블(view) 생성 가능함
- Glue DataBrew 는 사전 빌드된 변환을 사용하여 데이터를 정리하고 정규화 함
- Glue Studio 는 ETL 작업들을 생성하고, 실행하고 모니터링하는 GUI 를 제공함
- Glue Streaming ETL 은 ETL 작업을 (배치 작업이 아니라) 스트리밍 작업으로 실행 가능하도록 하며,
실행시 Spark Structured Streaming 위에 빌드되어 작업이 진행됨
< Lake Formation >
Data Lake 란, 데이터 분석을 위해 모든 데이터를 한 곳에 저장한 중앙 집중식 저장소임
그리고 Lake Formation 은 Data Lake 생성을 수월하게 해주는 완전 관리형 서비스임
Lake Formation 을 사용하면, 보통 수개월씩 걸리는 작업을 며칠만에 완료할 수 있다고 함
Lake Formation 은 Data Lake 에서의 데이터 검색(discover), 정제(cleanse), 변환(transform), 삽입(ingest) 등의 작업을 도와줌
그리고 데이터 수집, 정제나 카탈로깅, 복제 및 복잡한 수작업을 자동화하고
기계 학습 변환 기능으로 중복 제거 수행을 진행할 수 있음
Data Lake 에서는 정형 데이터와 비정형 데이터 소스를 결합할 수 있으며, 블루 프린트를 제공함
여기서 말하는 블루프린트는 데이터를 Data Lake 로 migrate 하는 것을 도와주며
S3, RDS, NoSQL 등에서 지원된다고 함
Lake Formation 을 사용하는 이유는, 모든 데이터를 한 곳에서 처리할 수 있기 떄문이며
더불어 애플리케이션에서 행, 열 수준의 세분화된 액세스 제어를 할 수 있기 때문임
Lake Formation 에 연결된 애플리케이션에서는 세분화된 액세스 제어가 가능함
Lake Formation 은 Glue 위에 빌드되어 실행된다고 함
하지만 Glue 와 직접 상호작업 하지는 않는다고 함
예를 들어보자.
Data Lake 로 S3 storage 를 사용하는 상황임
Data Lake 에 넣는 원본 데이터는 RDS, S3, Aurora, NoSQL 등에서 오게 됨
Lake Formation 은 블루프린트를 통해 (바로 위) 원본 데이터들을 Data Lake(s3)로 ingest(주입)함
Lake Formation 에는 Source Crawlers 와 ETL 및 데이터 준비 도구, 데이터 카탈로깅 도구가 포함되어 있어서
크롤러를 통해 원본 데이터 스토리지에서 원본 데이터를 가져와 ETL 을 통해 Data Lake 에 데이터를 주입할 수 있음
Lake Formation 에는 Access Control 기능도 포함되어 있어서
Lake Formation 을 활용하는 Athena, RedShift, EMR, Spark 등의 서비스가 Data Lake 데이터에 접근하는 것을 컨트롤 할 수 있음
Lake Formation 이 사용되는 주요 기능은 바로 access control 기능임
Athena 등에 접근한 사용자들이 Athena 를 통해 Data Lake 의 모든 데이터를 보는 상황을 방지하기 위해
Lake Formation 에서 Athena 에 접근한 사용자별로 어떤 데이터에 읽기 권한을 줄 지, 쓰기 권한을 줄지 설정할 수 있음
Lake Formation 이 바라보는 Data Lake 데이터는 S3 에 저장되고
이렇게 저장된 데이터에 접근할 때 필요한 모든 액세스 제어, 행, 열 수준 보안은 Lake Formation 내에서 관리됨
Lake Formation 한 곳에서 보안 관리를 할 수 있다는 것이 큰 장점임
따라서 Lake Formation 에 연결하는 사용하는 모든 서비스는 읽기 권한이 있는 데이터만 볼 수 있음