Search
moon
sun
🏓

Amazon Athena에 대해 알아보기

대화형식의 SQL 쿼리 엔진

1. Introduction to Amazon Athena

Amazon Athena

•
서버리스 분석 쿼리 엔진
◦
S3에 저장된 데이터 기반으로 처리
•
아래 3가지 키워드 기억
◦
분산
◦
SQL Query Engine
◦
Amazon S3

Why Amazon Athena?

•
데이저 저장 공간과 쿼리 엔진 분리
•
서버리스
•
쿼리 수행 만큼만 비용 지불
•
데이터를 읽어 올때 스키마를 사용한다.!!
◦
데이터를 적재할 때 스키마를 고려할 필요가 없다.

Simple Pricing

•
S3 데이터를 스캔할 때 비용 발생
•
+ S3 GET, LIST, PUT 비용

Run standard SQL

•
ANSI SQL 지원
◦
Open Source Presto 기반으로 Amazon Athena 개발됨.
▪
Presto에서 지원되는 대부분의 쿼리 지원

Fast Performance for Large Data Sets

•
대용량의 데이터에 대해 빠른 쿼리 수행
•
Federated Query 지원
◦
다른 종류의 DB를 Athena와 연동해서 쿼리 가능

How to handle Large Data Sets?

•
RDS
•
RDS에서 성능을 늘리려면…
◦
Scale-up, Scale-out(Master 1ea)

Decouple storage from compute

•
Athena
•
Amazon Athena에서 성능을 늘리려면…
◦
Scale-out 전략
◦
Query Engine, Storage 분리
▪
Multi Master(writer)
•
Computer - Storage Interface Layer - Storage

Distributed Data Processsing System

2. Athena Design Patterns

1: Ad-hoc use-case

•
데이터에서 SQL로 분석할때…

2: SaaS use-case

•
SaaS형태로 데이터 분석 서비스 제공
•
실시간성 (RDS) + 배치(Athena)

3: ETL and query use-case

•
Data 변형 후 적재 등에 Query기반의 Athena 사용

4: Data science exploration and feature engineering

Comparison of SQL Processing engines

•
Amazon EMR/Glue
•
Amazon EMR(Presto)
•
Amazon Athena
•
Amazon Redshift
◦
Data Warehouse
◦
Data Store: Redshift Node상

3. Athena in Action

Create External Tables

•
S3에 저장된 데이터에 대한 스키마를 먼저 정의해야 한다.
◦
Create External Tables
•
Athena에서 테이블 삭제시 S3 상에 데이터 삭제 X
•
읽을 때 스키마 정의

Navigate to ‘Saved Queries’ to get DDL

•
“Saved Queries’ 항목 참고해서 Athena Query 작성.

Create External Table using DDL(예)

•
비행 정보 관련 테이블…

New Flights Parquet Table Created(예)

•
SELECT * FROM XXX LIMITS 100;

Save Query Results

•
실행 결과는 Default로는 위 형식의 S3 Bucket를 생성하고 해당 버킷내 저장됨.

How to execute query?

•
광고 데이터(예)

Data Schema & Location

•
Schema + Location

3.1 Tuning and Design Patterns

Data Formats and SerDes

•
Apache web logs
◦
Regular Expression 으로 구분 가능한 형식

Data Formats in Create Table

Column Data Types

Example

•
ROW FORMAT serde..
◦
각 파일에 행의 값을 Serialize / Deserialize 하기 위해 설정

3.2 Partitions

Partitions

•
Partition = 폴더로 생각

Example

•
PARTITIONED BY..

Partitions in Create Table

How does partioning work?

•
Partition 했을 때 장점은..
◦
위 비행 정보 예를 보면.. 2000년 이전 폴더(파티션)은 접근하지 않는다.
◦
비용 절감

Using Partition Projection

•
where조건에 파티션이 들어가면 특정 파티션만 찾아서 빠르게 접근 가능하다.

Data Catalog (Meta Store) - Schema, Location

•
Data Catalog(Meta Store)에 데이터 위치, 파티션이 저장된다.
•
Partitions X
◦
전체 데이터 가져온 후 필터링
•
Partitions O
◦
데이터 가져올 때 파티션 적용

Partition by Running MSCK Repair

•
아예 없거나 잘못된듯 하여 전체 파티션을 다 맞추겠다 → MSCK

Partition by Manually Adding Partitions

Data Catalog(Meta Store) - Schema, Location

•
파티션을 Data Catalog에 추가하더라도 S3에 데이터가 없더라도 오류 발생하지 않는다.
•
실 사용시..
◦
S3 데이터 적재와 무관하게 Data Catalog에 파티션을 미리 생성해 놓는다.
•
S3에는 데이터가 적재되었으나 Data Catalog에 해당 파티션이 없는 경우 데이터를 읽을 때 문제 발생(읽지 못함.)

Convert to Columnar Formats - Parquet/ORC

•
Data Format이 Athena Query 성능에 영향을 준다.
◦
Columnar Format으로 변경 (BY Hive / Spark)

Different workloads - OLTP vs. OLAP

•
데이터 분석할 때 OLTP vs. OLAP 으로 나눠볼 수 있다.
•
OLTP
◦
RDB에서 처리하는 트랜잭션
◦
온라인 트랜잭션 처리
◦
하나의 행에 있는 모든 데이터를 모두 사용하는 경우가 많다.
•
OLAP
◦
통계 계산
◦
하나의 행에서 특정 컬럼 몇개를 사용하는 경우가 많다.

Row-wise vs. Columnar

•
Row-wise(OLTP)
◦
전체 행에 대해서 주로 데이터를 처리
•
Columnar(OLAP)
◦
특정 컬럼 몇개를 선택해서 통계를 낸다.
◦
컬럼 단위로 묶어 놓는게 빠르게 처리 가능하다.
◦
컬럼 단위로 묶는 경우 중복 데이터가 많기 때문에 압축률이 높다
▪
예> Col C(성별) 인 경우 값은 남자 / 여자..
→ Athena는 OLAP 성 처리를 주로 하기 때문에 데이터가 Columnar로 저장되는 것이 좋다.

3.3 Optimize and Secure

Best Practices

•
Partition your data
•
Bucket your data
◦
데이터를 버킷팅한다. = 파티셔닝과 유사
•
Compress and split files
◦
컬럼 형태로 데이터 저장. 압축. 잘 나누자
•
Optimize File Sizes
◦
파일 사이즈를 적절한 크기로..
▪
파일 단위로 Workload가 분배가 된다. 하나의 파일이 크다고 해서 쪼개지지 않고 전달된다.

Best Practices Continued

Access Control for Athena

3.4 Workgroups

Athena Workgroups

•
접근 권한을 구축할 때 Workgroup을 사용한다.
•
Workgroup을 사용하면..
◦
다른 권한
◦
쿼리 메트릭
◦
비용 제어

Workgroups - Workload Isolation

Workgroups - Metric Reporting

Workgroups - Cost Controls

Setting Up Workgroups

•
RDB에서 특정 사용자에게 테이터베이스, 테이블 접근 권한 제어를 하는 것 처럼 사용 가능하다.

Default Workgroup

3.5 Views

View

Create a View

3.6 CTAS

CREATE TABLE AS SELECT (CTAS)

•
ETL 가능
•
특정 테이블에서 특정 컬럼만 뽑아서 새로운 테이블 만들시..

CTAS Example

Use CTAS queries to:

•
특정 컬럼만 뽑아서 저장
•
데이터 형식 변환
•
작은 파일을 큰파일로 변환

Data Processing: ETL vs. ELT

•
ETL
◦
데이터를 변형한 후 타겟에 저장
◦
변환은 타겟 밖에서 진행
•
ELT
◦
타겟에 저장한 후 변환 진행
◦
Athena

3.7 Monitoring & Auditing

Workgroups

CloudTrail

Monitoring Athena Queries with CloudWatch Metrics

Monitoring Athena Queries with CloudWatch Events

•
콘솔은 동기.. SDK 사용 시 비동기로 처리됨.

4. Summary

Key Benefits of Athena

Getting Started