brunch

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

순서만 이해하자

by Master Seo

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 확인

20 emr add step.png
19 spark step.png

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 :

연결

80 edit.png



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



감사합니다.


keyword
매거진의 이전글600. EMR Monitoring을 통한 상태 모니터