brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 17. 2021

602. EMR 사용.  Spark 사용하기-순서이해

순서만 이해하자

EMR 사용하고 , Spark 실행해서 데이터를 처리하는 상세 방법을 알아보자.


S3에 데이터를 수집한다.

EMR에서 Spark를 사용한다.

Amazon Redshift에 데이터를 올려  Amazon Redshift를 이용할수도 있다.

둘다 결과는 같다.



<1> 데이터 처리 순서

<2>  EMR 은 데이터 분석 플랫폼,  전체 구성과  주요 작업을 알아보자

<3> 상세 작업 순서

<4> S3 생성하고 , S3에  파이썬 스크립트 업로드

<5> EMR에서  Spark 실행

<6> System Manager로  EMR 연결

<7> Spark로  데이터 쿼리

<8> Spark-Redshift 연결을 위한  AWS자격 증명 생성

<9> Spark-Shell로 처리된 데이터 확인

<10> EMR에서 Spark 이용해  Amazon Redshift로 데이터 전송

<11> Amazon Redshift  이용  데이터 확인

<12> Spark로  데이터 쿼리   VS    Amazon Redshift  이용  데이터 확인



 

<1> 데이터 처리 순서


1

구성도?

Raw data  S3 ---------- EMR  --------- Amazon Redshift ----------Machine Learning ------ Dashboard 

                                                                                                                                  L_______  결과 S3


2

데이터 처리 순서 ?

Raw data를 S3에 넣는다.

EMR  Spark에서  데이터를 읽고 처리한다.

용량이 아주 큰 경우 Redshift에서 추가 분석한다

분석 데이터를 머신러닝 한다.  

데이터 보드에 원하는 결과가 나온다.

결과 데이터는  S3에 저장된다.

비즈니스 판단을 하여  서비스를 개선한다.



<2>  EMR 은 데이터 분석 플랫폼,  전체 구성과  주요 작업을 알아보자


1

도구?

Apache Spark, Hive , HBase , Flink , Presto  같은 오픈 소스 도구를 사용한다.


2

주요 도구?

Apache Spark 사용

Amazon Redshift 사용

S3 사용


3

구성과  주요 작업?

Raw data  S3 ---------- EMR  --------- Amazon Redshift ----------Machine Learning ------ Dashboard 


EMR에서  Spark 실행

Spark에서 데이터 처리

Spark로  EMR에서  Amazon Redshift로 데이터 전송 (Spark Redshift 커넥터 사용)




<3> 상세 작업 순서


Raw data  S3 ---------- EMR  --------- Amazon Redshift ----------Machine Learning ------ Dashboard 


S3 생성하고 , S3에  파이썬 스크립트 업로드

EMR에서  Spark 실행

System Manager로  EMR 연결

Spark로  데이터 쿼리

Spark-Redshift 연결을 위한  AWS자격 증명 생성

Spark-Shell로 처리된 데이터 확인

EMR에서 Spark 이용해  Amazon Redshift로 데이터 전송

Amazon Redshift에서 데이터 확인




<4> S3 생성하고 , S3에  파이썬 스크립트 업로드


S3 

spark-seo11  >  Creeate Bucket

Create folder > in

Upload > Add files > S3에  파이썬 스크립트 업로드




<5> EMR에서  Spark 실행


1

EMR 생성 해보자  -  (주의Starting 에서 안넘어간다. 체크 필요, Running이 되어야 한다.)

EMR 

Crete cluster > My cluster2 > Go to advanced options

Hadoops , Hive , Hue, Pig 가 디폴트 이다.

Spark 2.4.7  check  해서 설치하자

Networking >  EC2 Subnet 을 선택하자.  (필수)

Master  , Core  사양 조절

만든 s3에   s3://sparkt-seo11/logs/  

 여기서는 테스트 이므로 Debugging , Termination protection 체크 해제

create cluster

20 분 소요


2

EMR

Steps

Add step

Spark Application 

test 1

application locaton : s3://xxxxxxxxx/a/xxxxxxxxx.py

arguments s3://xxxxxxxxxxxx/b

add

10분 소요


3

complete  확인

3

S3 

s3://xxxxxxxxxxxx/b  내용 확인




<6> System Manager로  EMR 연결


command host  login

EMR  로그인




<7> Spark로  데이터 쿼리


외부 S3에서  필요한 JAR파일 다운 로드

Spark shell  시작

scala >




<8> Spark-Redshift 연결을 위한  AWS자격 증명 생성


라이브러리 가져오기

IAM 



<9> Spark-Shell로 처리된 데이터 확인


S3 경로 변수를 생성

필요한 것 확인 명령 실행

10분 소요됨


Spark 는 10분 정도씩 걸림

좀 걸린다.





이제  Redshift 로 빠르게 되는지 확인해보자~


<10> EMR에서 Spark 이용해  Amazon Redshift로 데이터 전송


1

Amazon Redshift


2

JDBC URL  확인

변수로 지정


3

데이터를  Amazon Redshift에 쓴다. (명령어 실행)


4

콘솔 Redshift > QUERIES >  Queries and loads  에서 확인한다.





<11> Amazon Redshift에서 데이터 확인


1

Amazon Redshift 

왼쪽 창에서 Editor 선택

Connect Database

database name :

database user :

연결



2

데이터 쿼리 

SELECT count(*) FROM  xxxxxxxxxxx;




<12> Spark로  데이터 쿼리   VS    Amazon Redshift  이용  데이터 확인


정리  ?


1

Spark로  데이터 쿼리   VS    Amazon Redshift  이용  데이터 확인  결과는 같다.


2

Amazon Redshift  이용  데이터 확인 이 더 빠르다.


3

Amazon Redshift 는  사용하기위해  데이터를 올리는 시간이 필요하다.





https://brunch.co.kr/@topasvga/1766



감사합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari