본문 바로가기

데브코스/TIL

[TIL] 8주차_Day33: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (3)

💡Today I Learned

  • 데이터 웨어하우스, SQL, BI 대시보드에 대한 세 번째 수업을 진행했습니다.
  • Redshift 스냅샷, Spectrum, SageMaker을 이용한 ML 실습

1. Redshift의 권한/보안

- IAM Role

: AWS 리소스 관련 권한 설정 서비스

: 역할(Role) 혹은 그룹(Group) 별로 스키마별 접근 권한을 주는 것이 일반적

: 사용자 집합 = 그룹, 테이블 집합 = 스키마

: 역할(계승 o → 포함관계, 상속 느낌), 그룹(계승 x)

GRANT [권한 옵션] ON SCHEMA [스키마 이름] TO GROUP [그룹 이름];
GRANT [권한 옵션] ON ALL TABLES IN SCHEMA [스키마 이름] TO GROUP [그룹 이름];

 

: 컬럼 레벨의 보안 → 특정 컬럼에 특정 사용자/그룹/역할만 접근 가능

: 레코드 레벨 보안 → 특정 레코드에 특정 사용자/그룹/역할만 접근 가능

 

 

2. Redshift의 백업/테이블 복구

- Snapshot (in 고정 비용 옵션)

: 마지막 백업으로부터 바뀐 것들만 저장

: 과거로 돌아가 그 시점의 내용으로 특정 테이블을 복구함

: 자동 백업 / 매뉴얼 백업

: 재난 시 다른 지역의 리소스에 백업 (Cross-regional snapshot copy 설정)

: 자동 백업은 기본 1일~최대 35일까지 보관 가능 (스토리지 비용은 더 증가할 수 o)

 

- Recovery Points (in 가변 비용 옵션 _ Redshift Serverless)

: 백업 내용이 과거 24시간에 대해서만 유지됨 (백업이 하루 단위밖에 안됨)

: Recovery Point를 Snapshot으로 바꾼 다음 여기서 테이블을 복구하거나 새로운 Redshift 클러스터를 생성하거나 ..

: 스냅샷이 자동으로 생기지 않음 (고정 비용과 다르게)

 

: 가변비용 = 컴퓨팅 자원 & 스토리지가 서로 구분돼있기 때문 (별개로 존재), 쓴만큼 비용 지불

→ 스토리지, 컴퓨팅 리소스가 특정 고객에게 고정된 것이 없음

스냅샷을 계속 잡을 수 없음

 

3. Redshift 관련 기타 서비스

- Redshift Spectrum

: Redshift의 확장 기능

: (Redshift와 같은 지역에 있는) S3 등에 있는 큰 파일을 Redshift에서 (따로 로딩하지 않고외부 테이블처럼 사용 가능하게 해줌

: Redshift로 로딩하는 오버헤드 없음

: S3의 정보 처리를 Redshift_with Spectrum 에서 할 수 있도록 구현

: 임시 목적으로 사용 (DB 내부로 복사하고 쓰는 것이 x)

: 보통 읽기 전용으로 참조만 함

 

*) S3 = 스토리지, 데이터 레이크, Fact 테이블=외부 테이블

*) Redshift = 데이터 웨어하우스, Scalability가 작음, Dimension 테이블

 

- Athena (Apache Presto를 서비스화 함)

: Redshift Spectrum과 비슷한 기능 제공

: S3의 데이터를 기반으로 SQL 쿼리 기능 제공

: 이런 경우에는 S3를 데이터 레이크로 봄

: Redshift 쓰지 않는다면 Athena 사용

 

- Redshift ML

: SQL만 사용해서 ML 모델 훈련/사용할 수 있게 해주는 Redshift 기능

: AWS SageMaker(ML end-to-end framework)에 의해 지원

: 1) 다수의 레코드로 ML 모델 학습부터~.. 2) 이미 만들어진 모델을 로딩해서 Redshift, SQL 내의 함수처럼 사용 가능

 

*) 지도학습 모델만 대상으로 함 (y_label o)

 

 

4. Redshift Spectrum으로 S3 외부 테이블 조작

- Fact 테이블

: 분석의 초점이 되는 양적 정보를 포함하는 중앙 테이블

: (일반적으로 Dimension보다) 크기가 큼

: 사용자들이 한 행동들이 기록됨

: 일반적으로 외래 키를 통해 여러 Dimension 테이블과 연결됨

→ S3에 저장해 필요할 때마다 로딩해서 사용

→ ex) user_session_channel

- Dimension 테이블

: Fact 테이블에 대한 상세 정보를 제공하는 테이블

: (일반적으로 Fact보다) 크기가 작음

: 일반적으로 primary key를 가지고, Fact 테이블의 foreign key에서 참조함

→ 웨어하우스(Redshift)저장해 필요할 때 Join해서 사용

→ ex) user, channel (user_session_channel을 만들 때 사용된)

 

- Use case

: S3에 대용량 Fact 테이블들이 파일로 존재 + Redshift에 소규모 Dimension 테이블들이 존재

→ 적재하지 않고 두 테이블을 join하고싶을 때 Spectrum 사용!

: 이 때 S3, Redshift는 동일 region에 있어야 함

: S3의 IAM Role에 AWSGlueConsoleFullAccess 권한 추가

: Redshift 내에 외부 테이블용 스키마 생성

 

- AWS Glue

: AWS의 Serverless ETL 서비스 (Airflow와 유사 but AWS specific함)

: 데이터 카탈로그, ETL 작업 생성, 작업 모니터링/로그, 서버리스 실행

: AWS Spectrum, Athena 사용할 경우 함께 사용하는 서비스

 

5. Redshift ML

- 머신러닝

: 입력 = training set / 출력 = label

 

- Amazon SageMaker

: ML end-to-end

: MLOps 프레임워크

: 모델 개발~끝까지

: 1) 트레이닝 셋 준비  2) 모델 훈련  3) 모델 검증  4) 모델 배포/관리 (API endpoint로 배포, 실제 production의 로깅, 배치 서빙, ..)

: 모델 훈련에도 다양한 ML 프레임워크 지원 (tf, PyTorch, MXNet, scikit-learn..)

: SageMaker Studio라는 (코랩 비슷한) 웹 기반 환경 제공

: 파이썬 모듈(SageMaker 모듈)도 있음 *) 비용 o

 

- AutoPilot

: AutoML (모델 빌딩을 위한 훈련 집합을 제공하면 자동으로 모델 만들어 줌)

: 모델 개발의 속도를 단축시킬 수 있음

: 최종적으로 사용자가 모델 선택 후 API로 만드는 것도 가능

 

- SageMaker 실습

: 훈련용 데이터셋 준비 (Kaggle의 Orange_Telecom_Customer_Churn 데이터)

: .csv파일을 S3 버킷 아래의 폴더로 업로드

: Redshift의 raw_data 스키마 아래에 'orange_telecom_customers' 테이블로 벌크 업데이트 (COPY)

: SageMaker 사용 권한을 Redshift cluster에 지정 (IAM Role 생성 → AmazonSageMakerFullAccess 정책 지정)

  • 1) SageMaker가 Redshift cluster의 테이블에 access하기 위한 권한
  • 2) Redshift가 SageMaker의 기능을 background에서 사용하기 위한 권한
  • IAM Role (AWS service=SageMaker) > SageMaker & S3 FullAccess 정책 추가 > 신뢰 관계 > 신뢰 정책 편집 > 보안 주체 추가 > AWS services의 "redshift.amazonaws.com" 정책 추가 > 업데이트
  • 만든 IAM Role의 ARN 사용
  • Redshift serverless > 네임스페이스 > 보안/암호화 > IAM 역할 관리, 연결 (방금 만든 'Redshift-ML' 역할)

: 80%의 레코드를 이용해 모델 생성 (CREATE MODEL) *) SageMaker 비용 발생

  • CREATE MODEL [모델 이름] FROM([사용할 훈련 feature_column 선택])
  • TARGET [예측할 label인 column]
  • FUNCTION [모델을 최종적으로 만들었을 때의 SQL 함수 이름]
  • IAM_ROLE '[Role ARN string 복붙]'
  • SETTINGS (S3_BUCKET '[관련 로그를 저장할 s3 버킷 이름]')
  • SHOW MODEL [모델 이름] 으로 모델이 준비됐는지 체크 *) 비용 발생

: Model SQL 함수 사용해 모델 예측 수행

: SageMaker 관련 리소스 모두 제거하기!!

  • Drop Model
  • SageMaker 웹 콘솔에서 관련 리소스 삭제

 

6. Redshift 중지/삭제

*) Serverless에는 중지/삭제의 컨셉은 따로 없음.. (가변비용이라)

 

- VACUUM 명령

: 테이블 청소, 최적화

: 테이블 데이터 정렬

: 디스크 공간 해제

: 삭제된 행에서의 공간 회수 (테이블에서 행 삭제 시 VACUUM 명령 전까지 이 공간은 회수되지 않음)

: 테이블 통계 업데이트

 

- Redshift 클러스터 중지/재실행

: 웹 콘솔 > Actions > Pause/Reboot/Delete

: 삭제 전 Redshift의 스냅샷을 S3에 저장할 수 있음 (추후 새로운 Redshift cluster을 이 스냅샷을 통해 만들 수 있음)

 

- Redshift serverless 삭제

1) 모든 workgroup 삭제

2) 그 다음 모든 namespace 삭제

 

 

 

 


 

💡Furthermore

  • GRANT USAGE ON ~.. 의 의미
반응형