220429/30 데이터 파이프라인 스터디 18/19일차(Presto와 Tableau 연동해서 Dashboard 구성)

Tableau

이번 포스팅에서는 Presto와 Athena에 이어서 Tableau에 대해서 정리를 해보려고 한다.

최근 학습한 내용에 있어서, 데이터 전처리 및 시각화하는데 사용되는 서비스들이 많이 등장하였는데, 가장 최근에 배웠던 Presto와 Athena, 그리고 Tableau 이 세 개의 기술에 대해서 다시 한 번 전체적으로 개념을 잡고 Tableau를 실습한 내용을 정리하려고 한다.

Presto / Athena / Tableau

우선 Presto -> Athena -> Tableau 순으로 살펴보면,

Presto는 짧은 시간의 임시 데이터 분석에 최적화된 Open source로, 분산 SQL query engine으로, 이종 데이터간의 JOIN을 지원한다.

Athena는 Presto와 같이 SQL query를 실행시킬 수 있고, Serverless이다.
단, Presto와는 다르게 RDS 데이터와 JOIN(이종 데이터간의 JOIN)은 지원하지 않는다.하지만, 분석할때에는 Presto가 좋다고 하더라도 항상 구동시켜놓기에는 Presto는 부담이 있기 때문에 Serverless인 Athena를 Tableau와 연동해서 시각화를 하는 것도 좋다.

자 앞서 살펴보았던 Presto와 Athena는 둘 다 SQL Query engine으로, 데이터를 SQL Query로 분석할 수 있다는 공통점이 있었지만, 이종 데이터간의 JOIN을 할 수 있기도(Presto) 없기도한(Athena) 차이가 있었다.

Tableau

그럼 Tableau는 무엇인가? Tableau는 BI(Business intelligence) 툴로, 뭔가 어려워 보이는 툴이지만, 사람들이 데이터를 보고 이해할수 있도록 돕는다.는 경영철학을 가지고 만들어진 소프트웨어이다.
이 BI 소프트웨어는 3명의 스탠포드 대학 출신의 Christian, Chris, Pat이 설립한 Tableau 기업에서 만든 소프트웨어로, Pat과 Chris가 데이터 베이스에 저장되어있는 데이터의 이해를 돕고자 추친된 프로젝트에 참여하여 당시 가장 상용화된 BI 소프트웨어를 사용하였는데, 박사출신인 본인들이 사용하기에도 너무 어렵게 느껴져서 이 부분에 문제점을 자각하게 되면서 만든것이 바로 이 Tableau라는 BI 툴이다.

당시 후발주자로 BI 업계에 들어왔지만, 빠른 속도로 시장을 장악하였으며, 현재 BI 소프트웨어 업계에서 부동의 1위를 차지하고 있다.
BI(Business Intelligence) : 책, 저널, 문서, 이미지, 메일, 파일, 기타 비즈니스 소스를 포함한 내/외부 시스템에서 많은 양의 비정형 데이터를 수집하고 처리하는 어플리케이션 소프트웨어 형식이다. 주로 쿼리를 통해 정보를 찾기 위해 데이터를 수집하는 방법을 제공한다. 대시보드 및 데이터 시각화를 만들 수 있도록 분석할 데이터를 준비하는데 도움이 된다.

자 이렇게 Presto와 Athena는 데이터 분석툴이고, Tableau는 BI 툴이라는 정리가 되었다.
이제 본격적으로 Presto와 Tableau를 연동해서 Dashboard를 구성해보는 실습을 해보자.

Read more

220428 데이터 파이프라인 스터디 17일차(Amazon EMR기반 Presto 기본 개념 및 Presto-cli 실습)

Presto

이번 포스팅에서는 수집한 데이터를 전처리 및 저장한 뒤에 gold 데이터를 활용하여 분석 및 시각화하는 실습을 하는 부분에 대해서 정리를 해보려고 한다.
분석하기 편한 데이터 형태로 데이터를 변환한 다음에 해당 데이터를 시각화 작업을 통해서 분석작업을 한다.
Presto는 HDFS와 S3를 비롯한 여러 데이터 소스의 처리를 할 수 있는 분산 SQL query engine이다.
Presto는 Data Visualization Tool과 연동을 해서 작업을 할 수도 있다.

[핵심]

  • Presto를 사용해서 S3에 저장되어있는 Hive Table Data를 BI툴에 제공할 수 있다.
  • Presto와 Tableau를 연동하여 Dashboard를 구성할 수 있다.
  • Near Realtime 분석툴 ElasticSearch를 활용할 수 있다.

분석 및 시각화 전체 흐름

EMR 내의 Spark을 통해서 정제된 데이터가 S3에 저장되고, 기본적으로 AWS에서 서비스를 운영하면 전반적인 데이터가 S3에 저장이 된다. 그리고 S3에 저장된 데이터에 대한 metadata 정보는 metastore인 AWS Glue에 저장이 된다. (순환구조)

분석가분들은 Glue에 저장된 meta정보를 기반으로 데이터 분석을 시작한다.
분석을 할때에는 EMR내의 Presto cluster(cluster이기 때문에 복수 개의 노드에 거쳐서 iterative하게 분석이 가능)나 Athena(serverless 분석툴)를 사용해서 진행한다. (Presto와 Athena 둘 다 SQL 분석 지원)
Tableau, Elastic search에서 가장 많이 사용하고 있는 Kibana를 통해서 시각화를 해 줄 수 있다.

Read more

220426/27 데이터 파이프라인 스터디 15/16일차 (Glue의 Crawler/Glue를 활용한 분석 Table 생성)

S3-Crawler-Glue Data Catalog-Athena

이번 포스팅에서는 AWS Glue의 Crawler에 대해 실습한 내용을 정리해보려고 한다.
데이터에 대한 트랜스폼 (CSV-JSON, JSON-PARQUET) 실습을 했는데, 쌓여있는 데이터를 크롤링을 통해서 glue에 있는 data catalog에 등록하는 작업을 실습해보고, 이렇게 Data Catelog에 쌓인 metadata를 분석하기 위해서 Atena를 사용해서 조회해보는 것 까지 실습해본다.

AWS Glue 데이터베이스 추가

테스트용 데이터베이스를 AWS Glue 하위의 데이터베이스에서 추가해준다.

데이터베이스 내의 테이블이 초기 생성에서는 비어있는 상태인데, 크롤러 추가 버튼과 함께, 크롤러를 통해 DB내의 테이블을 생성할 수 있음을 알 수 있다.

Read more

220425 데이터 파이프라인 스터디 14일차 (AWS Glue 서비스)

AWS Glue

이번 포스팅에서는 AWS Glue라는 서비스에 대해서 배웠던 내용을 정리하려고 한다. 메타 데이터를 관리할 수 있는 서비스인데, 최근에 여러 회사에서 governance에 대한 관심과 여러 tool들이 많이 나오고 있고, data에 대한 정의(metadata)에 대해서 관심이 높아지고 있다.

이전에 데이터파이프라인에 대해서 가장 처음 전체적인 흐름에 대해서 배웠을때, 데이터 수집과 전처리의 중간 지점에 있는 관련 AWS 서비스에 Glue라는 서비스가 있다고 배웠는데, AWS Pipeline의 복잡해짐에 따라서 관리 및 운영이 어려워지고, 이러한 문제를 개선하기 위해서 등장한 친구라고 간단하게 배웠었다.
AWS Glue에는 파이프라인의 기본적인 서비스들이 추가가 되어있고, 가장 비용 효율적으로 잘 활용되고 있는 부분이 메타 스토어 정보가 포함되어있는 부분인데, meta store의 정보에는 데이터 위치, 포멧, 버전의 변경사항등에 대한 정보를 포함하고 있다고 한다.

(2022/04/27 업데이트)

Glue의 가장 큰 특징은 서버리스로, 설정하거나 관리할 별도의 인프라가 없다는 것이다. 그리고 메타 데이터만으로 ETL작업이 가능하기 때문에 원본 데이터의 변경 및 변경 데이터의 저장을 위한 별도의 저장소가 필요가 없다.
(왜 데이터 파이프라인이 복잡해졌을때 Glue라는 서비스가 유용한지 이해가 잘 안됐었는데, 원본 데이터의 사용없이 메타 데이터만으로 ETL작업이 가능하다는 점에서 Glue라는 서비스는 별도의 파이프라인을 통하지 않고 메타 데이터만으로 분석이 가능하도록 해주는 아주 유용한 친구라는 것을 다시 개념정리를 하면서 알게 되었다.)
스케쥴링 기능으로 주기적인 작업을 실행하고 자동화할 수 있으며, 북마크 기능으로 작업상태를 저장하여 중단된 시점부터 작업 재개하는 것이 가능하고 작업에 대한 모니터링 또한 지원을 한다.

Read more

220425 데이터 파이프라인 스터디 14일차 (Spark로 가공한 데이터를 Amazon RDS(MySQL)에 저장)

S3 - EMR - RDS 구성

이번 포스팅에서는 Amazon EMR(정확히는 EMR내의 Zeppelin의 Spark Interpreter를 통해서)에서 가공한 데이터를 내보낼 target에 대한 준비가 끝났기 때문에 이제 다시 Amazon EMR에서 어떻게 전처리한 데이터를 target 지정을 해서 내보내는지에 대해서 알아보도록 하겠다.
뭔가 데이터 파이프라인 구축은 정말 말 그대로 구성할 파이프를 각 각 만들어놓고, 특정 파이프의 output을 다음 공정의 파이프의 input으로 넣어주는 과정을 만드는 것 같다는 느낌에 재미있는 것 같다. 물론 각 파이프를 구성하고 전체적인 파이프라인 구성도를 생각해내는 것은 아직도 연습이 많이 많이 필요하지만, 그래도 이런 흥미를 붙였다는 것에 앞으로의 공부에 있어 좋은 원동력이 될 것 같다.
자 그럼 이제 본격적으로 Amazon RDS에 Spark로 가공한 데이터를 넣어주는 처리를 해보도록 하자.

Read more