+ All Categories
Home > Documents > Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고...

Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고...

Date post: 11-Feb-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
27
Serverless Real-Time Data Analytics Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight Apr 2018
Transcript
Page 1: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Apr 2018

Page 2: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 2

This work may not be reproduced or redistributed, in whole or in part, without prior written

permission from Amazon Web Services, Inc. Commercial copying, lending, or selling is prohibited.

Correction or feedback for this lab guide, please send email to me: [email protected]

All trademarks are the property of their owners.

Page 3: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 3

Table of Contents

소개 ..................................................................................................................................................................................................... 4

사전 준비 .......................................................................................................................................................................................... 5

EC2 키 페어 생성 .................................................................................................................................................................. 5

S3 버킷 생성 ........................................................................................................................................................................... 5

CloudFormation 스택 생성 및 확인 .............................................................................................................................. 5

Kinesis Firehose 를 통한 데이터 수집 .................................................................................................................................. 7

Kinesis Data Firehose 생성 ............................................................................................................................................... 8

Kinesis Agent 설정 ............................................................................................................................................................... 9

데이터 수집 확인 ................................................................................................................................................................ 11

Glue 를 이용한 ETL 작업 .......................................................................................................................................................... 12

Glue 데이터 카탈로그 생성 ............................................................................................................................................ 13

Glue 를 이용한 데이터 변환 작업 ................................................................................................................................ 15

Athena 를 이용해 데이터 분석 .............................................................................................................................................. 18

Athena 를 이용해 실제 표준 SQL 쿼리 수행 ........................................................................................................... 19

QuickSight 를 이용한 시각화 ................................................................................................................................................. 21

QuickSight 를 이용해 Athena 테이블 시각화하기 ................................................................................................ 22

삭제 가이드.................................................................................................................................................................................... 25

Page 4: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 4

소개

이 실습을 통해 AWS 의 다양한 데이터 분석 서비스 중 서버리스 서비스만을 사용하여 실시간 데이터

분석 플랫폼을 구축해 봅니다. 온라인 쇼핑몰의 샘플데이터를 기반으로 한 이 실습을 통해 AWS

상에서 실시간으로 클릭스트림 데이터를 분석하는 방법을 익힐 수 있습니다.

사전에 제공하는 EC2 인스턴스에서 발생하는 로그 데이터를 Kinesis Firehose 를 통해 수집하고 S3 에

저장한 뒤 Glue 를 활용하여 ETL(추출, 변환 및 로드) 작업과 Athena 를 통한 분석을 수행합니다. 그

뒤에는 QuickSight 를 활용해 수집한 데이터를 시각화합니다.

실습을 완료한다면 다음 아키텍처의 플랫폼을 구축하게 됩니다.

Page 5: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 5

사전 준비

실습은 us-east-1 (버지니아 북부) 리전을 사용합니다. 실습을 시작하기에 앞서 해당 리전을

선택합니다.

실습에 필요한 데이터를 발생시킬 EC2 인스턴스와 데이터 전처리에 사용할 Lambda 함수, 그리고

실습에서 사용할 데이터를 저장할 S3 버킷이 필요합니다. 또한 Kinesis Agent 에 적절한 권한을

부여하기 위한 IAM 사용자가 필요합니다.

EC2 키 페어 생성

이후 생성할 EC2 에 SSH 접속을 하기 위해서는 키가 필요합니다. 이미 us-east-1 리전에 사용 중인

키가 있다면 건너 뜁니다.

1. AWS Management Console 에서 EC2 서비스로 이동합니다.

2. 좌측 메뉴에서 [키 페어] 메뉴를 클릭한 뒤 [키 페어 생성] 을 클릭합니다.

3. [키 페어 이름] 을 입력한 뒤 [생성] 버튼을 클릭하여 완료합니다.

4. .pem 파일 다운로드가 잘 되었는지 확인합니다.

S3 버킷 생성

1. AWS Management Console 에서 S3 서비스로 이동합니다.

2. [+버킷 만들기] 버튼을 클릭하고 버지니아 북부 리전에 버킷을 생성합니다.

CloudFormation 스택 생성 및 확인

실습에 사용할 IAM 사용자, EC2 인스턴스, Lambda 함수 등은 미리 제공하는 CloudFormation

템플릿을 통해 구성합니다.

1. AWS Management Console 에서 CloudFormation 서비스로 이동합니다.

2. [스택 생성] 버튼을 클릭합니다.

3. [Amazon S3 템플릿 URL 지정] 옵션을 선택하고 다음 URL 을 입력합니다.

https://s3.amazonaws.com/anhyobin-analytics/code/cloudformation.yaml [다음] 을 선택합니다.

4. [스택 이름] 에 적절한 이름과 [KeyName] 부분에 EC2 키 페어를 선택합니다. [다음] 을 선택하여

진행합니다.

Page 6: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 6

5. 옵션 화면에서도 [다음]을 선택한 뒤 검토 화면에서 [AWS CloudFormation 에서 사용자 정의

이름으로 IAM 리소스를 생성할 수 있음을 승인합니다.] 옵션을 체크한 뒤 [생성] 을 클릭하여 스택

생성을 완료합니다.

6. 아래의 [출력] 탭에서 생성한 인스턴스의 Public IP 및 AccessKey 등을 확인할 수 있습니다.

7. 해당 Public IP 로 SSH 접속합니다. 자세한 접속 방법은 다음 URL 에서 확인할 수 있습니다.

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

8. EC2 인스턴스에 원하는 파일과 서비스가 설치되었는지 확인합니다.

[ec2-user@ip-172-31-73-164 ~]$ ls /home/ec2-user generator.py sample_data.csv [ec2-user@ip-172-31-73-164 ~]$ ls /tmp clickstream-log [ec2-user@ip-172-31-73-164 ~]$ sudo service aws-kinesis-agent status aws-kinesis-agent is stopped

Page 7: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 7

Kinesis Firehose 를 통한 데이터 수집

이제 본격적으로 데이터 분석을 위한 플랫폼 구축을 시작해보겠습니다. 가장 먼저 구축할 단계는

데이터를 수집하는 부분입니다. Kinesis Firehose 는 스트리밍 데이터를 데이터 스토어와 분석 도구에

로드하는 가장 쉬운 방법입니다.

이번 단계에서는 스트리밍 데이터를 수집하고 Lambda 를 통해 변환한 뒤 S3 에 적재하는 부분을

구성하게 됩니다.

Page 8: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 8

Kinesis Data Firehose 생성

Kinesis Data Firehose 를 우선 생성하겠습니다. Kinesis Data Firehose 는 완전 관리형 서비스로서

데이터 처리량에 대응하여 자동으로 확장되기 때문에 관리가 간편합니다. 또한 Lambda 를 이용한

데이터 전처리도 가능합니다.

1. AWS Management Console 에서 Kinesis 서비스로 이동합니다.

2. [시작하기]를 선택한 뒤 Kinesis Firehose 전송 스트림으로 스트리밍 데이터 전송 옵션의 [전송

스트림 생성] 버튼을 선택합니다.

3. [Delivery stream name] 에 실습에 사용할 이름을 지정해줍니다. Source 는 [Direct PUT or other

sources]를 선택합니다. [Next] 를 클릭합니다.

4. Transform records 에서 [Record transformation] 은 [Enabled]를 선택합니다.

5. 아래 Lambda 함수를 선택하는 메뉴에서 CloudFormation 을 통해 생성된 [dataTransformation]

을 선택합니다. 해당 함수는 샘플 데이터의 ‘Ship Mode’ 를 ‘Shipping Option’ 으로 변경하는

역할을 합니다. [Next]를 클릭하여 진행합니다.

6. Destination 은 [Amazon S3]를 선택합니다. 아래 S3 bucket 은 앞서 생성한 버킷을 선택합니다.

Prefix에는 데이터 구분을 위해 [raw/] 를 입력합니다. 다음 스크린샷과 같이 구성했다면 [Next]를

선택합니다.

Page 9: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 9

7. Buffer size 는 [1MB], Buffer interval 은 [60 seconds]를 입력합니다.

8. 아래 IAM role 에서 [Create new, or Choose] 버튼을 클릭합니다. IAM 페이지가 열리고 자동으로

IAM 역할이 구성됩니다. [허용] 버튼을 클릭합니다. Kinesis Data Firehose 생성 페이지로 돌아오면

[Next] 를 선택하고 [Create delivery stream] 버튼을 클릭하여 Kinesis Data Firehose 생성을

완료합니다.

9. 잠시 후 Status 가 Active 로 변경되면 Kinesis Data Firehose 생성이 완료된 것입니다.

Kinesis Agent 설정

이제 생성한 Kinesis Data Firehose 로 데이터를 전송합니다. Kinesis Data Firehose 로 데이터를

전송하는 방법은 Kiensis Data Streams 이용, 에이전트 이용, SDK 를 이용하는 등 다양합니다. 이번

실습에서는 에이전트를 이용하겠습니다. 그 외의 방법에 관한 자세한 내용은 다음 링크에서 확인할 수

있습니다. https://docs.aws.amazon.com/ko_kr/firehose/latest/dev/basic-write.html

1. 앞서 생성한 EC2 인스턴스에 SSH 접속합니다.

2. Kinesis Agent 설정파일은 /etc/aws-kinesis/ 에 있습니다. vi 에디터 등을 사용하여 agent.json

파일을 열어준 뒤 수정합니다.

[ec2-user@ip-172-31-73-164 ~]$ sudo vi /etc/aws-kinesis/agent.json

Page 10: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 10

3. 내용을 다음과 같이 수정합니다.

{ "cloudwatch.emitMetrics": true, "firehose.endpoint": "firehose.us-east-1.amazonaws.com", "flows": [ { "filePattern": "/tmp/clickstream-log/*.json", "deliveryStream": "Kinesis Data Firehose 에 생성한 스트림 이름" } ] }

4. 잘 수정하였다면 이제 에이전트를 시작하고 데이터를 발생시키겠습니다. 다음과 같이 명령어를

수행합니다.

[ec2-user@ip-172-31-73-164 ~]$ sudo service aws-kinesis-agent start aws-kinesis-agent startup [ OK ] [ec2-user@ip-172-31-73-164 ~]$ python /home/ec2-user/generator.py & [1] 24587 * 백그라운드에서 스크립트를 수행하기 위해 꼭 & 를 입력합니다.

5. 백그라운드에서 데이터 생성이 시작됩니다. 다음 명령어를 통해 로그가 잘 쌓이는지 확인합니다.

[ec2-user@ip-172-31-73-164 ~]$ cd /tmp/clickstream-log/ [ec2-user@ip-172-31-73-164 clickstream-log]$ ls -l total 76 -rwxrwxrwx 1 ec2-user ec2-user 60140 Mar 18 07:42 0_clickstream.json -rwxrwxrwx 1 ec2-user ec2-user 15351 Mar 18 07:42 1_clickstream.json [ec2-user@ip-172-31-73-164 clickstream-log]$ tail 0_clickstream.json {"Category": "Office Supplies", "City": "Los Angeles", "Profit": "6.633", "Country": "United States", "Region": "West", "Sub-Category": "Art", "State": "California", "Customer Name": "Jim Sink", "Postal Code": "90036", "Row ID": "90", "Quantity": "3", "Product ID": "OFF-AR-10004930", "Customer ID": "JS-15685", "Sales": "20.1", "Ship Mode": "Standard Class", "OccurenceTime": "2018-03-18T07:42:09.220714", "Discount": "0", "Product Name": "Turquoise Lead Holder with Pocket Clip", "Order ID": "CA-2016-109806", "Segment": "Corporate"}

Page 11: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 11

6. Kinesis Data Firehose 로 데이터가 잘 전송되는지는 에이전트 로그를 통해 확인할 수 있습니다.

[ec2-user@ip-172-31-73-164 clickstream-log]$ tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log

2018-03-18 07:45:06.972+0000 ip-172-31-73-164 (FileTailer[fh:anhyobin-firehose:/tmp/clickstream-log/*.json].MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.tailing.FileTailer [INFO] FileTailer[fh:anhyobin-firehose:/tmp/clickstream-log/*.json]: Tailer Progress: Tailer has parsed 445 records (249069 bytes), transformed 0 records, skipped 0 records, and has successfully sent 364 records to destination.

2018-03-18 07:45:06.973+0000 ip-172-31-73-164 (Agent.MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.Agent [INFO] Agent: Progress: 445 records parsed (249069 bytes), and 364 records sent successfully to destinations. Uptime: 240048ms

데이터 수집 확인

Kinesis Data Firehose 와 S3 에 접속하여 파일이 잘 수집되고 있는지 확인해봅니다.

1. AWS Management Console 에서 Kinesis 서비스로 이동한 뒤 생성한 Kinesis Data Firehose 를

선택합니다.

2. [Monitoring] 메뉴에서 데이터를 수집하고 전송하는 정보들을 모니터링 할 수 있습니다.

3. S3 서비스로 이동한 뒤 생성한 버킷을 선택합니다.

4. raw 폴더가 생성된 것을 확인할 수 있고, 그 아래에 년/월/일/시간 순서대로 분류되어 EC2 의

데이터가 실시간으로 수집되는 것을 확인할 수 있습니다.

5. 파일을 다운 받아 열어보면 ‘Ship Mode’ 가 ‘Shipping Option’으로 Lambda 로 전처리되어 수집된

것을 확인할 수 있습니다.

Page 12: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 12

Glue 를 이용한 ETL 작업

데이터를 발생하고 해당 스트리밍 데이터를 Kinesis Data Firehose 를 통해 실시간으로 S3 에 수집하는

부분까지 완료했습니다. 이제는 본격적으로 데이터를 분석하는 부분을 살펴보겠습니다.

Glue 는 분석을 위해 데이터를 준비하는 단계를 자동화 하는 완전관리형 ETL(추출, 변환 및 로드)

서비스입니다. Glue 는 Glue 데이터 카탈로그를 통해 데이터를 자동으로 검색 및 프로파일링하고, ETL

코드를 추천 및 생성하여 소스 데이터를 대상 스키마로 변환하고, 완전관리형 스케일 아웃 Apache

Spark 환경에서 ETL 작업을 실행하여 데이터를 대상에 로드합니다. 또한, 이를 사용하여 복잡한 데이터

흐름을 설정, 오케스트레이션 및 모니터링할 수 있습니다.

Page 13: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 13

Glue 데이터 카탈로그 생성

우선 Glue 데이터 카탈로그를 구성해야 합니다. Glue 데이터 카탈로그는 모든 데이터 자산의 정형 및

운영 메타데이터를 저장하는 중앙 리포지토리입니다. 이번 실습에는 Glue Crawler 를 사용해 손쉽게

카탈로그를 구성해보도록 하겠습니다.

1. AWS Management Console 에서 Glue 서비스로 이동합니다.

2. 좌측의 [Crawlers] 메뉴에서 [Add crawler]를 선택합니다.

3. [Crawler name]을 입력한 뒤 [Next] 버튼을 클릭합니다.

4. Data store 는 [S3]를 선택하고 Crawl data in 은 [Specified path in my account], 그리고 Include

path 에는 [s3://생성한 버킷/raw] 를 직접 입력하거나 혹은 우측의 폴더 모양 버튼을 통해

선택합니다.

5. Add another data store 는 [No] 로 진행합니다. [Next]를 클릭합니다.

6. IAM 역할을 선택합니다. [Choose an existing IAM role] 옵션을 선택한 뒤 CloudFormation 을

통해 생성된 [GlueAnalyticsRole]을 선택합니다..

7. Crawler 실행을 스케줄에 따라 진행할 수 있습니다. 이번 실습에는 데이터 카탈로그의 변경이 없기

때문에 [Run on demand]를 선택합니다. 최소 5 분 주기로 계속 Crawling 을 수행할 수 있습니다.

자세한 내용은 다음 링크를 참고하세요.

https://docs.aws.amazon.com/ko_kr/glue/latest/dg/monitor-data-warehouse-schedule.html

8. Crawler 의 Output 을 저장할 Database 를 구성합니다. [Add database]를 선택하고 선호하는

이름을 입력한 뒤 [Create]을 클릭합니다. [Next]를 선택하여 진행합니다.

9. 설정한 내용이 문제가 없다면 [Finish]를 클릭하여 완료합니다.

10. 다음과 같이 Crawler 생성이 완료 됩니다. On demand 로 실행하게 설정하였기 때문에 선택한 뒤

[Run crawler] 를 클릭하여 작업을 시작합니다.

11. 작업이 완료되면 [Tables addes] 항목의 값이 1 로 변경됩니다.

Page 14: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 14

12. Tables 메뉴를 선택하면 raw 테이블이 앞서 설정한 Database 에 생성된 것을 확인할 수 있습니다.

카탈로그 확인을 위해서 [Actions]의 [View details]를 선택합니다.

13. 생성된 데이터 카탈로그를 확인할 수 있습니다.

14. 카탈로그의 데이터는 [Actions]의 [View data]를 선택하면 확인할 수 있습니다.

Page 15: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 15

Glue 를 이용한 데이터 변환 작업

Glue 에서는 Python 과 Scala 두 가지 언어를 이용하여 작성한 ETL 스크립트 수행할 수 있습니다. 또한

스크립트를 자동 생성하고 테스트하고 실행하는 것도 가능합니다. 이번에는 Glue Job 을 이용하여

JSON 타입으로 저장한 데이터를 Parquet포맷으로 변환해보겠습니다.

Athena 를 이용할 때 Parquet포맷으로 저장한 데이터를 사용하는 것이 성능과 비용면에서

유리합니다. Parquet 이나 ORC타입의 경우는 데이터가 기본적으로 압축되고 분할이 가능하기

때문입니다. 보다 자세한 내용은 다음 글을 참고하세요.

https://aws.amazon.com/ko/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/

1. AWS Management Console 에서 Glue 로 이동합니다.

2. 좌측의 메뉴의 ETL 아래 [Jobs]를 선택합니다. [Add job]을 선택하여 작업을 추가합니다.

3. [Name]을 입력하고 [IAM role]은 [GlueAnalyticsRole]를 선택합니다. This job runs 옵션은 [A

proposed script generated by AWS Glue]를 선택하여 제공되는 스크립트를 사용합니다. ETL

language 는 [Python]을 선택하고 그 외 옵션은 기본값을 유지합니다.

4. [Advanced Properties] 메뉴를 확장해 보면 Job bookmark 부분이 있습니다. [Enable]로 설정하여

ETL 작업을 어디까지 진행하는지를 기록합니다. [Next]를 클릭해 진행합니다.

Page 16: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 16

5. Data source 는 앞서 생성한 데이터 카탈로그 [raw]를 선택합니다. 선택 후 [Next]를 클릭합니다.

6. Data target 을 설정해야 합니다. [Create tables in your data target] 옵션을 선택합니다. 이번

실습에는 Data store 는 [S3]를 선택하고, 데이터 포맷은 [Parquet]을 선택합니다. Target path 는

[s3://생성한 버킷/parquet/] 을 입력합니다.

7. Source 와 Target 사이에 컬럼을 매핑할 수 있습니다. 오늘 실습에서는 변경할 내용이 없습니다.

[Next]를 클릭하여 진행하고, [Finish]를 클릭하여 완료합니다.

8. 생성된 ETL 스크립트와 해당 스크립트를 다이어그램으로도 보여줍니다. 상단의 [Run job]을

클릭하여 작업을 수행합니다. Glue 가 ETL 작업을 수행할 환경을 구성한 뒤 작업이 수행되게

됩니다. 수분의 시간이 소요됩니다.

9. 작업이 완료되면 Run status 가 [Succeeded]로 표시됩니다.

Page 17: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 17

10. S3 의 버킷으로 이동하면 Target path 로 설정했던 parquet 이 생성되고 아래에 변환된 parquet

데이터가 저장된 것을 확인할 수 있습니다.

11. Data target 을 새로 생성했기 때문에 이 부분도 데이터 카탈로그를 만들어 줍니다. Crawlers

메뉴로 이동하여 동일하게 [s3://생성한 버킷/parquet]에 대한 Crawler 를 구성한 뒤 실행합니다.

이 때 Database 는 앞서 생성한 데이터베이스를 그대로 사용합니다.

12. Databases 의 Tables 메뉴로 이동하면 새롭게 추가된 parquet 테이블을 확인할 수 있습니다.

Page 18: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 18

Athena 를 이용해 데이터 분석

데이터 카탈로그까지 구성했습니다. 이제는 실제 표준 SQL 를 사용해 실시간으로 수집한 데이터를

쿼리 해보겠습니다. Athena 는 표준 SQL 을 사용해 Amazon S3 에 저장된 데이터를 간편하게 분석할

수 있는 대화식 쿼리 서비스입니다. Athena 는 서버리스 서비스이므로 설정하거나 관리할 인프라가

없으며 데이터 분석을 즉시 시작할 수 있습니다. Athena 로 데이터를 로드할 필요 없이 S3 에 저장된

데이터를 직접 사용하면 됩니다.

또한 Athena 에서 Glue 데이터 카탈로그를 사용할 수 있기 때문에 데이터 스키마 등을 고민할 필요가

없습니다.

Page 19: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 19

Athena 를 이용해 실제 표준 SQL 쿼리 수행

1. AWS Management Console 에서 Athena 로 이동합니다.

2. Glue 를 통해 생성한 테이블이 조회됩니다. parquet 테이블에 몇가지 쿼리를 수행해보겠습니다.

3. 우선 데이터를 살펴 봅니다. parquet 테이블 옆의 : 버튼을 클릭한 뒤 [Preview table]을 클릭하면

10 개 데이터를 조회할 수 있습니다.

4. 가장 많은 조회가 발생한 상위 10 개 아이템을 조회해 봅니다.

SELECT product_name, product_id, count(*) AS count FROM parquet GROUP BY product_name, product_id ORDER BY count desc LIMIT 10;

Page 20: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 20

5. sales 와 profit 컬럼을 통해 예상 수익과 기대 순익을 계산해 봅니다.

SELECT SUM(sales) AS total_revenue, SUM(profit) AS estimated_earning FROM parquet;

6. 그 외에 다양한 표준 SQL 을 이용하여 데이터를 분석해봅니다.

Page 21: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 21

QuickSight 를 이용한 시각화

마지막으로 지금까지 수집하고 쿼리를 통해 분석한 것을 시각화를 해봅니다. QuickSight 는 클라우드

기반 비즈니스 분석 서비스로 S3, Athena, RDS, Redshift 와 같은 AWS 서비스의 데이터를 빠르게

시각화할 수 있습니다. 온 프레미스 데이터베이스에 액세스 하는 것도 가능합니다.

Page 22: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 22

QuickSight 를 이용해 Athena 테이블 시각화하기

이번 실습에서는 Athena 의 데이터를 시각화해봅니다. QuickSight 에서는 SPICE 라는 인 메모리 엔진을

사용하여 빠른 쿼리 성능을 제공합니다.

1. AWS Management Console 에서 QuickSight 서비스를 선택합니다.

2. [Sign up for QuickSight] 버튼을 클릭하여 계정을 생성합니다. [Standard] 옵션을 선택하고

[Continue] 버튼을 클릭하여 진행합니다.

3. [QuickSight account name], [Notification email address] 를 차례로 입력합니다. 아래는

QuickSight 에서 사용할 서비스를 선택하게 됩니다. [Amazon Athena] 에 체크가 된 것을

확인하고, 해당하는 S3 버킷도 마찬가지로 체크 되었다면 [Finish]를 클릭하여 마무리합니다.

Page 23: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 23

4. 생성이 완료되면 좌측 상단의 [New analysis] 버튼과 [New data set] 버튼을 차례로 클릭합니다.

5. Athena 를 선택합니다. Data source name 을 입력한 뒤 [Create data source]버튼을 클릭합니다.

6. 계정에 있는 모든 Database 가 보입니다. 오늘 실습에서 사용한 Database 와 parquet 테이블을

선택합니다.

7. [Import to SPICE for quicker analytics] 옵션을 선택하고 [Visualize] 버튼을 클릭하여 데이터

세트 구성을 완료합니다.

8. 다양한 그래프를 이용하여 대시보드를 구성해봅니다. 상단의 [+Add] 버튼을 클릭하면 그래프를

추가할 수 있습니다.

Page 24: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 24

9. 대시보드는 우측 상단의 [Share] 버튼을 클릭한 뒤 [Create dashboard] 를 선택하면 만들 수

있으며, 다른 사용자와 공유하는 것도 가능합니다.

10. 준비한 실습은 여기까지 입니다. 끝까지 진행해주셔서 감사합니다!

Page 25: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 25

삭제 가이드

오늘 실습에서 사용한 리소스들을 삭제 합니다.

1. CloudFormation 스택을 삭제합니다. 생성한 스택을 선택한 뒤 [작업]에서 [스택 삭제]를

선택합니다.

2. Kinesis Firehose 를 삭제합니다. 생성한 Kinesis Firehose 를 선택한 뒤 [Delete] 버튼을 클릭합니다.

3. Glue 데이터 카탈로그를 삭제합니다. Glue 에서 Database 를 선택한 뒤 [Action]의 [Delete

database]를 선택합니다.

Page 26: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 26

4. Glue Craweler 를 삭제합니다. Glue 에서 생성한 Crawler 를 선택한 뒤 [Action]의 [Delete

Crawler]를 선택합니다.

5. Glue ETL Job 을 삭제합니다. Glue 에서 Jobs 의 선택한 ETL Job 을 선택한 뒤 [Action]의 [Delete]를

선택합니다.

Page 27: Serverless Real-Time Data Analytics...이번 단계에서는 스트리밍 데이터를 수집하고 Lambda를 통해 변환한 뒤 S3에 적재하는 부분을 구성하게 됩니다.

Serverless Real-Time Data Analytics

Hands-on with Kinesis, Lambda, S3, Glue, Athena, and QuickSight

Copyright 2018, Amazon Web Services, All Rights Reserved Page 27

6. S3 버킷을 삭제합니다. 생성한 버킷을 선택한 뒤 [버킷 삭제] 버튼을 클릭합니다.

7. 마지막으로 QuickSight 를 삭제합니다. QuickSight 로 이동한 뒤 우측 상단의 계정을 클릭하고

[Manage QuickSight] 버튼을 클릭합니다. 좌측의 [Account settings]를 클릭하고

[Unsubscribe]버튼을 클릭합니다.


Recommended