초보 개발자

AWS 데이터 분석 본문

AWS SAA

AWS 데이터 분석

taehyeki 2023. 2. 17. 10:01

Athena

Athena는 s3버킷에 저장된 데이터 분석에 사용하는 서버리스 쿼리 서비스이다.

데이터를 분석하려면 표준 SQL언어로 파일을 쿼리해야한다.

사용자가 s3버킷에 데이터를 로드 하면, athena서비스를 사용해서 이동하지 않고 s3에서 데이터를 쿼리하고 분석할 수 있다. 즉 athena는 서버리스로 s3버킷의 데이터를 바로 분석한다. 

스캔된 데이터의 TB당 고정 가격을 지불하면 된다. 

전체 서비스가 서버리스여서 데이터베이스를 프로비저닝할 필요가 없다.

Athena는  ouickSight라는 도구화 사용하는 일이 많다. -> 이를 통해 보고서와 대시보드를 생성한다.

 

사용사례로는 임시쿼리 수행이나 , aws서비스 에서 발생하는 모든 로그를 쿼리하고 분석할 수 있다.

서버리스 SQL엔진을 사용한 S3데이터 분석이 나오면 Athena를 떠올리면된다.

 

Glue라는 것이 있는데 이건 적재 작업으로 (ETL) csv와 parquet 간 데이터를 변환하는 데 매우 유용하다.

 

 

Redshift

postgreSQL기술 기반이지만 OLTP(온라인 트랜잭션 처리)에는 사용되지 않는다. 

온라인 분석 처리를 의미하는 OLAP유형의 데이터베이스이다. 

다른 어떤 데이터 웨어하우징보다 성능이 10배 이상 좋고 데이터가 PB규모로 확장되므로

모든 데이터를 RedShift에 로드하면 redshift에서 빠르게 분석할 수 있다.

서버리스 서비스가 아니다 ( 클러스터가 존재해야함 )

 

열 기반 데이터 스토리지를 사용하기 때문에 성능이 뛰어나다.

행기반이 아니라 병렬 쿼리 엔진이 있다.

쿼리 수행할때 SQL문을 사용할 수 있다.

Ouicksight같은 도구나 tableau도 redshift와 통합할 수 있다.

 

VS Athena

 

redshift는 s3에서 모든 데이터를 redshift에 로드해야한다.(redshift spectrum을 사용하면 직접 로드할 필요는 없음)그럼 쿼리가 더 빠르고 조인고 ㅏ통합을 훨씬 더 빠르게 할 수 있다. athena에는 없는 인덱스가 있기 때문이다.  s3의 임시쿼리라면 athena가 좋은 사용 사례가된다. 쿼리가 많고 복잡하며 조인 하거나 집계하는 등 집중적인 데이터 하우스라면 redshift가 더 좋다.

 

redshift 클러스터에는 두 노드가 있다.

리더 노드는 쿼리를 계획하고 결과를 집계한다.

컴퓨트 노드는 실제로 쿼리를 실행하고 결과를 리더 노드에 보낸다.

컴퓨트 노드 (쿼리 실행 )-> 리더 노드

redshift 클러스터는 노드 크기를 미리 프로비저닝 해야 한다.

 

redshift는 다중 az모드가 없고 클러스터가 한 개의 가용영역에 있으므로 재해복규 전략을 적용하려면 스냅샷을 이요해야 한다. s3내부에 저장하면 된다. 새로운 redshift 클러스터에 스냅샷을 복원할 수 있다.

스냅샷을 자동으로 남기든 수동으로 남기든 이 스냅샷을 다른 aws리전에 자동으로 복사하도록 구성하여 재해 복구 전략을 구성할 수 있다.

 

redshift에 데이터를 주입하는 방법으로는 kinesis data firehose-> redshift, s3 -> redshift, ec2 -> redshift가 있다.

 

Open search

elasticsearch의 후속서비스이다.

기본 키나 데이터베이스의 인덱스로만 데이터를 쿼리할 수 있는 dynamoDB와 비교해보면

open search로는 부분적으로 일치하는 필드를 포함해 모든 필드를 검색할 수 있다.

검색기능을 제공할 때 많이 사용된다.

또 쿼리를 분석할 때도 사용할 수 있다.

인스턴스의 클러스터를 생성해야 한다. ( 서버리스 서비스가 아님 )

자체 쿼리가 있어 SQL을 지원하지 않는다. 

kinesis data firehose , aws iot, cloudwatch logs나 사용자 지정 애플리케이션의 데이터를 주입할 수 있다.

Cognito, IAM과 통합해 제공하는 보안을 통해 저장데이터 아뫃화 및 전송중 데이터를 암호화할 수 있다. 

 

EMR

Elastic MapReduce의 약어로 

빅데이터 작업을 위한 Hadoop clusters생성에 사용된다. 방대한 양의 데이터를 분석하고 처리할 수 있다.

하둡 클러스터가 있는 빅데이터에 관한 내용이 나오면 EMR이다.

 

하둡클러스터는 프리비저닝해야하고 수백개의 ec2로만들어져있다.

마스터노드, 코어노드, 태스크 노드가있다.

마스터노드는 코어노드를 관리하고

실제 작업은 코어 노드에서 이루어진다,

그리고 태스크노드는 테스트용으로 사용하며 보통 스팟인스턴스로 구성된다.

 

Quicksight

서버리스 머신 러닝 기반비즈니스 인텔리전스 이다.

대화형 대시보드를 생성해준다. 데이터소스와 연결시켜주며 오토스케일링이 가능하다.

웹사이트에 임베드가 가능

비즈니스 분석, 시각화 구현, 등에 사용된다.

 

RDS Aurora Athena Redshift, s3 등 다양한 데이터 소스에 연결할 수 있다.

직접 excel파일 csv파일 등을 업로드해서 사용가능하고, 온프레미스 데이터베이스 (jdbc)나 다른 서비스와도 연동이 가능하다.

 

시험에는 outsight를 athena redshift와 함께 사용하는 문제가 자주 나온다. 

( 특정 사람에게만 공유하고 싶을 때 IAM으로 컨트롤 하는 것이 아니라 그 사람들에게만 share하면됨 )

 

Glue

추출과 변환 로드 서비스를 관리하며 분석을 위해 데이터를 준비하고 변환하는데 매우 유용하다.

redshift에 보내기전에 자료를 다듬는 과정이라고 생각하자

완전 서버리스 서비스이다. 

s3버컷이나 RDS데이터 베이스에 있는 데이터를 데이터하우스인 redshift에 로드할 경우를 예를 들어보자

glue를 사용해 추출한 다음 일부 데이터를 필터링 하거나 열을 추가하는 등 원하는 대로 데이터를 변셩할 수 있다.

그 다음 redshift 데이터 웨어하우스에 로드한다. 

 

시험에 나올만한것

데이터를 praquet로 바꾸는 것이다. parquet은 열 기반 데이터이므로 athena같은 서비스와 함께 사용하면 효과적이다.

예를 들어 s3버킷에 csv형식으로 된 데이터를 glue에 삽입한다고 해보자 glue ETL서비스를 사용해 csv를 praquet형식으로 로 변환한다음 출력 s3버킷으로 데이터를 보낸다. parquet형식으로 바뀌면 athena가 파일을 훨씬 더 잘 분석한다.

 

파일이 s3버킷에 삽입될 때 마다 lambda함수로 이벤트 알림을 보내 glue ETL작업을 트리거 하는 것도 가능하다.

 

glue data catalog는 데이터 세트의 카탈로그이다.  

 

glue 작업 북마크 

새 ETL작업을 실행할 때 이전 데이터의 재처리를 방지한다. 

 

Lake formation

데이터레이크 : 데이터 분석을 위해 모든 데이터를 한 곳으로 모아주는 중앙 집중식 저장소이다.

lake formation은 데이터 레이크 생성을 수월하게 해주는 완전 관리형 서비스이다.

수개월씩 걸리는 작업을 며칠만에 완료한다.

머신러닝으로 중복제거를 수행해주고 데이터 수집, 정제 카탈로깅 복제 같은 복잡한 수작업을 자동화해준다. 

비정형 데이터와 정형 데이터 소스를 결합할 수 있다. 

 

Kinesis analytics

kinesis data strams , kinesis data firehose 의 데이터 소스에서 데이터를 읽는다. 

둘중한군데서 데이터를 읽어 온 다음 SQL문에 적용하여 실시간 분석을 처리할 수 있다. 

 

BIG Data ingestion pipeline

애플리케이션 수집 파이프라인이 완전히 서버리스 이면서 AWS가 100% 관리해준다면 더할 나위 없을 것이다.

실시간으로 데이터를 수집하고 변형하고 이걸 사용해서 SQL을통해 보고서를 만들어 S3에 자동으로 저장된다면 말이다.

이 후 데이터를 데이터 웨어하우스에 등재하여 대시보드를 생성하고자 한다. 

 

데이터 생산자가 IoT장치라고 가정해보자 . Amazon서비스 중 ioT core는 IoT 장치 관리를 돕는다.

 IoT Core는 장치에서 실시간으로 전송받은 데이터를 Kinesis Data Stream으로 직접 전달한다. Kinesis의 데이터 스트림은

이걸 Kinesis data Firehose로 전달하여 S3버켓으로 데이터를 입력할 수 있다. 이렇게 여러 장치에서 많은 데이터를 실시간으로 얻을 수 있는 파이프라인이 마련되었다. S3버킷에 데이터를 계속 입력해줄 뿐만아니라 람다함수를 이용하여 (firehose->lambda) 빠른 속도로 데이터를 정리하거나, 변형하도록 도와주기도 한다. 

또 s3버킷에 저장된 내용을  sqs와 연결시킬 수도 있다.(이 부분은 생략해도 생관없음 s3에서 바로 람다 부를 수도 있음) 이 sqs를 또 람다와 연결시켜 이 람다가 Athena SQL쿼리를 실행하면 Athena는 s3에서 데이터를 가져와 SQL쿼리를 생성하는데 이 모든 과정이 전부다 서버리스이다. Athena 쿼리 출력값은 또 s3 버킷으로 저장시킬 수 있다.

IoTDevices -> Kinesis Data Streams -> Kinesis Data Firehose -> S3 -> SQS(optional) -> Lambda -> Athena -> S3 -> OuickSight 

'AWS SAA' 카테고리의 다른 글

AWS 모니터링  (0) 2023.02.20
AWS 머신러닝  (0) 2023.02.20
SAA 서버리스 아키텍처  (1) 2023.02.16
AWS Serverless  (18) 2023.02.15
AWS Container  (0) 2023.02.14