기록 블로그

프로그래머스 데브코스-데이터 엔지니어/TIL(Today I Learned)

07/07 65일차 Spark EMR과 Spark 요약

usiohc 2023. 7. 7. 17:07

클라우드 Spark 서비스


주요 메모 사항


AWS에서 Spark을 실행하려면?

EMR (Elastic MapReduce) 위에서 실행하는 것이 일반적

 

EMR이란?

AWS의 Hadoop 서비스 (On-demand Hadoop)

ㄴ Hadoop (YARN), Spark, Hive, Notebook 등등이 설치되어 제공되는 서비스

EC2 서버들을 worker node로 사용하고 S3를 HDFS로 사용

AWS 내의 다른 서비스들과 연동이 쉬움 (Kinesis, DynamoDB, Redshift, …)

 

 

Spark on EMR 실행 및 사용 과정

1. AWS의 EMR (Elastic MapReduce - 하둡) 클러스터 생성

2. EMR 생성시 Spark을 실행 (옵션으로 선택)

ㄴ S3를 기본 파일 시스템으로 사용

3. EMR의 마스터 노드를 드라이버 노드로 사용

ㄴ 마스터 노드를 SSH로 로그인 -> spark-submit를 사용

ㄴ Spark의 Cluster 모드에 해당

 

 

Spark 클러스터 매니저와 실행 모델 요약

클러스터 매니저 실행 모드 (deployed mode) 프로그램 실행 방식
local[n] Client Spark Shell, IDE, 노트북
YARN Client Spark Shell, 노트북
YARN Cluster spark-submit

 

 

실제 EMR 서비스 스텝

1. EMR 서비스 페이지로 이동

2. Create Cluster 선택

3. Cluster name 적당히 지정

4. Software configuration

ㄴ Spark이 들어간 옵션 선택

ㄴ Zeppelin | Zeppelin이란? -> spark용 ipynb 라고 보면된다!

 

5. EMR 클러스터 생성하기 - 클러스터 사양 선택 후 생성

ㄴ m5.xlarge 노드 3개 선택 -> 하루 $35 비용 발생

ㄴ Create Cluster 선택

 

6. 마스터 노드의 포트번호 22번 열기

ㄴ EMR 클러스터 Summary 탭 선택

ㄴ Security groups for Master 링크 선택

ㄴ Security Groups 페이지에서 마스터 노드의 security group ID를 클릭

ㄴ Edit inbound rules 버튼 클릭 후 Add rule 버튼 선택

ㄴ 포트번호로 22를 입력, Anywhere IP v4 선택, Save rules 버튼 선택

 

 

 


AWS Spark 클러스터 상에서 PySpark 잡 실행

실행 과정

1. Spark 마스터노드에 SSH로 로그인

ㄴ 이를 위해 마스터노드의 TCP 포트번호 22번을 오픈했었

2. spark-submit을 이용해서 실행하면서 디버깅

3. 두 개의 잡을 AWS EMR 상에서 실행해 볼 예정

 

 

소스 코드

입력 CSV 파일을 분석하여 그 결과를 S3에 다시 저장할 예정

미국 개발자만 대상으로 코딩을 처음 어떻게 배웠는지 카운트해서 S3로 저장할 것

 

PySpark 잡 실행

Spark 마스터노드에 ssh로 로그인하여 spark-submit을 통해 실행

ㄴ 앞서 다운로드받은 .pem 파일을 사용하여 SSH 로그인

ㄴ spark-submit --master yarn stackoverflow.py

 

S3에서 확인

 

 

 

 

Spark 요약

Spark는 2세대 빅데이터 처리 기술

ㄴ 자체 분산 파일 시스템을 갖고 있지 않음

ㄴ DataFrame, SQL, ML, Streaming, Graph와 같은 다양한 기능 지원

구조화된 데이터처리라면 SQL 사용

 

Spark의 다른 용도 (ETL 다음)

ML Feature 계산

ㄴ 이는 큰 스케일에서는 Feature 계산을 위한 용도

ㄴ DataFrame과 SQL 사용 -> UDF를 많이 사용하게 됨

Model Serving

ㄴ MLflow와 연관

기타 분석 관련 파이프라인 작성

ㄴ 마케팅 기여도 분석

ㄴ A/B Test 분석 (DA와 협업)

 

 

 

다음 스텝은?

SQL 심화 학습, DBT 배우기

Spark 최적화 관련 학습

ㄴ Excutor와 Driver의 메모리 사용

ㄴ Spill이란 무엇이며 어떻게 막을 수 있나? (메모리 Issue)

ㄴ Data Skew를 막거나 줄이기 위한 방법들