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파일을 넣어준다.
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은 다음과 같다.
아래 파일은 데이터를 학습하고 모델로 만들어 적용하는 것이다.
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로 저장해서
위 파일 실행시 불러와 사용할 것이다.
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 서비스를 사용하는 프로젝트로 찾아오겠다.