목숨건데이터엔지니어
foot-data-engineering
목숨건데이터엔지니어
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 취업과 기본기 잡기 (11)
      • Python (2)
      • 자료구조 (1)
      • 알고리즘 (1)
      • 운영체제 (2)
      • 네크워크 (1)
      • 데이터베이스 (1)
      • SQL (1)
      • Linux (1)
      • Docker (1)
    • 더 나은 엔지니어가 되기위해 (11)
      • (AWS) api-gateway, kinesis (1)
      • (AWS) MWAA (1)
      • Apache Spark (1)
      • Apache Airflow (1)
      • Apache Kafka (1)
      • Apache Flink (1)
      • Hadoop (1)
      • 알쓸신잡 (4)
    • 데이터와 손잡기 (6)
      • 머신러닝(sklearn) (1)
      • 딥러닝 (3)
      • 오디오 처리 (1)
      • 데이터 시각화 (1)
    • 코딩테스트 잡기 (1)
      • [BOJ] 문제풀이 (0)
      • [프로그래머스] 문제풀이 (0)
      • [HackerRank] SQL (0)
      • 코딩테스트 후기 (1)
    • 토이 프로젝트 (4)
    • 각종 기술 삽질하며 익히기 - onpremise (11)
    • 학습과정 잡동사니 (7)
      • 오답노트 (7)
    • 평소 궁금증 파헤치기 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 아직 한참 부족하고 부끄러운 나의 github 링크

인기 글

태그

  • spark on centos7
  • ES
  • spark to mysql
  • CTAS
  • MWAA
  • 쓰레드와 프로세스
  • 멀티 프로그래밍
  • logstash
  • 파이썬
  • aws builders online series
  • scikit-learn
  • jupyter
  • #데이터수집
  • filebeat
  • #데이터 수집 절차
  • flink
  • LIVY
  • Api-Gateway
  • django
  • Tableau
  • EMR
  • 프로세스
  • spark
  • kafka
  • 네트워크 스위치
  • 서비쿼리
  • Kinesis
  • 도커파일
  • spark with elasticsearch
  • Elk

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
목숨건데이터엔지니어

foot-data-engineering

[TLC trips record analysis 3편] - EMR을 활용한 TLC taxi data 분석 및 MWAA로 워크플로우 관리
토이 프로젝트

[TLC trips record analysis 3편] - EMR을 활용한 TLC taxi data 분석 및 MWAA로 워크플로우 관리

2022. 2. 18. 01:23

AWS EMR을 사용해서 Spark로 taxi data를 분석해보고자 한다. raw data에 대한 preprocessing에 대한 부분은 다루지 않고 최종적으로 하게될 taxi의 택시비를 예측하는 프로세스를 구성할 것이다. EMR로 구성된 spark job workflow는 MWAA로 관리 할 것이다. airflow를 구성하는 여러가지 아키텍처들이 있는데 MWAA를 사용할 것이다.

 

ML workflow를 구성할 것인데 traindata는 1편에서 이미 batch processing으로 구성해 놓았고

https://foot-data-engineering.tistory.com/7

 

TLC trips record 1편 - EMR, AWS Aurora mysql, Glue 활용 (데분을 위한 데엔)

TLC trips record를 분석하고자한다. https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page TLC Trip Record Data - TLC TLC Trip Record Data The yellow and green taxi trip records include fields..

foot-data-engineering.tistory.com

 

[EMR클러스터생성 -> 하이퍼파라미터 튜닝 -> 모델학습 및 모델 저장 -> 클러스터 종료]순으로 진행 할것이다.

 

1) MWAA 구성 

1-1) MWAA을 프로비저닝한다. (미리 정리 해두었다 ^*^)

https://foot-data-engineering.tistory.com/13

 

MWAA 정리(Managed Workflows for Apache Airflow)

airflow에 대한 내용은 이전에 정리했기에 디테일한 내용은 pass하고 살펴보겠다. 사용사례 1. ETL = 대부분의 고객은 데이터 source에서 target으로 데이터를 추출, 변환, 적재하기 위해 airflow를 사용 한

foot-data-engineering.tistory.com

 

1-2) S3의 airflow 전용 bucket에 dag파일을 넣어준다.

https://github.com/industrial-engineering-person/tlc_trips_analysis_on_aws/blob/main/scripts/dags/tlc_airflow_emr.py

 

GitHub - industrial-engineering-person/tlc_trips_analysis_on_aws

Contribute to industrial-engineering-person/tlc_trips_analysis_on_aws development by creating an account on GitHub.

github.com

그럼 다음과 같이 생성된 dag를 ui에서 확인가능하다.

dag 안의 spark step file은 다음과 같다.

아래 파일은 데이터를 학습하고 모델로 만들어 적용하는 것이다.

https://github.com/industrial-engineering-person/tlc_trips_analysis_on_aws/blob/main/scripts/tlc_train_model.py

 

GitHub - industrial-engineering-person/tlc_trips_analysis_on_aws

Contribute to industrial-engineering-person/tlc_trips_analysis_on_aws development by creating an account on GitHub.

github.com

아래 파일은 데이터 학습전 파라미터를 최적화하는 코드이다. 최적화된 파라미터는 csv로 저장해서

위 파일 실행시 불러와 사용할 것이다.

https://github.com/industrial-engineering-person/tlc_trips_analysis_on_aws/blob/main/scripts/tlc_tune_hyperparameter.py

 

GitHub - industrial-engineering-person/tlc_trips_analysis_on_aws

Contribute to industrial-engineering-person/tlc_trips_analysis_on_aws development by creating an account on GitHub.

github.com

사실 두개의 파일을 하나로 합쳐 작성할 수도 있지만 관리측면에서 따로 구성해보고자 하는 목적도 있었고 mwaa workflow를 구성하기 위한 목적이 가장크다.

 

구성을 완료하면 다음과 같이 설정한 dependency를 볼 수 있다.

1-3) dag 실행

dag를 실행하면 첫번째 task가 emr cluster를 생성하는 것이니 다음과 같이 실행되는 모습을 볼 수 있다.

중간중간 실패를 하는 경우에는 airflow ui에서 log를 보며 디버깅을 해주었다.

emr step들을 추가하면 emr에서 다음과 같이 실행되고 있음을 확인가능하다. 더불어 cloudwatch를 연동해놓으면 log를 보며 디버깅하기 수월하다. 하지만 모든 log를 보도록 설정하면 cloudwatch의 요금이 적지 않기에 에러시 log를 기록하도록 하는 것도 좋은 방법이다.

최종적으로 workflow가 완료되고 cluster가 자동 종료되어 수작업없이 저녁에 batch를 돌릴 수 있는 환경이 구성되었다. ㅎㅎ

 

추가적으로 학습한 모델에 데이터를 적용한 모습이다.

 

 


 

tlc trips data 분석은 3편을 끝으로 마치며 다음 새로운 aws 서비스를 사용하는 프로젝트로 찾아오겠다.

 

'토이 프로젝트' 카테고리의 다른 글

[TLC trips record analysis 2편] - Aurora mysql에 저장한 데이터 살펴보기(Presto, Tableau, Athena)  (0) 2022.02.09
[TLC trips record analysis 1편] - EMR, AWS Aurora mysql, Glue 활용 (데분을 위한 데엔)  (0) 2022.02.09
Api-Gateway, Kinesis, S3 데이터 전송하기(데이터수집 on aws)  (0) 2022.02.06
    '토이 프로젝트' 카테고리의 다른 글
    • [TLC trips record analysis 2편] - Aurora mysql에 저장한 데이터 살펴보기(Presto, Tableau, Athena)
    • [TLC trips record analysis 1편] - EMR, AWS Aurora mysql, Glue 활용 (데분을 위한 데엔)
    • Api-Gateway, Kinesis, S3 데이터 전송하기(데이터수집 on aws)
    목숨건데이터엔지니어
    목숨건데이터엔지니어

    티스토리툴바