< 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 에 연결하는 사용하는 모든 서비스는 읽기 권한이 있는 데이터만 볼 수 있음

 

 

 

 

 

 

 

 

+ Recent posts