brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Apr 12. 2019

[AWS]64.빅데이터 분석,EMR로 시작하기

<1>  IOT장비에서 받아오는 미세먼지 데이터를 분석하고자 한다.

<2>  Amazon EMR  사용.  

<3> 서비스 구성

<4> 사전 준비

<5> EMR 생성하기

<6>  S3  > emr-hive2폴더에서 EMR 결과 확인하기

<7> (몰아보기)  EMR 실습



<1>  IOT장비에서 받아오는 미세먼지 데이터를 분석하고자 한다.

배치성 데이터를 처리하고자 한다.

이벤트 로그를 분석하고자 한다.

빠른시간내에 데이터 처리하고자 한다.



<2>  Amazon EMR  사용.  

대용량 데이터 처리
실시간 데이터 처리

저장장치 S3 사용

Spot Fleets 사용 (다양한 인스턴스사용)으로 비용절감

AutoScaling 사용

시각화 도구 사용



<3> 서비스 구성


1

서비스 구성도

S3로 받아 EMR로 분석 한다.


2

빅데이터 처리를 위한 구성


3

EMR 자체 내부 구성

<4> 사전 준비


1.  S3 Bucket 생성

2.  EC2 key Pair 생성



<5> EMR 생성하기


1) [S3]에서 EMR S3 버킷을 만든다.

name: emr-hive2

name: emr-log2


2) [EC2]에서 Key-Pair를 만든다.

name: emr-key2



3) [EMR]에서 EMR를 만든다.

Cluser name : test1

Instance Type : m4.large 정도로 비용크지 않게

EC2 key pair : emr-key2

[Create cluster] 클릭


4) 사용해보기


GUI로 실행하기.

Steps 클릭 > Add Step

Step type :

Hive program

Script S3 Location :

s3://ap-northeast-2.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q

Input S3 Location :

s3://ap-northeast-2.elasticmapreduce.samples

Ousput S3 Location :

s3://emr-hive2/


reflush 버튼 > Completed 확인


또는


Cli로  실행하기


Master node에 로그온하여  Cli 로 사용해보기

1) EMR  Summary에서  Master node의 Security group 수정

로그온하기 위해 내 pc의 ssh 허용

(Slave 도 동일하게 허용)



2) EMR Master node에 ssh로 접속


[root@ns2 ~]# ssh -i "emr-key2.pem" ec2-user@ec2-52-79-148-140.ap-northeast-2.compute.amazonaws.com

       __|  __|_  )

       _|  (     /   Amazon Linux AMI

      ___|\___|___

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/

7 package(s) needed for security, out of 12 available

Run "sudo yum update" to apply all updates.                                                                    

                                                                   

[ec2-user@ip-10-0-0-37 ~]$



EMR > Summary  > Master public DNS:   SSH클릭

해당 dns 로 접속한다.

ec2-52-79-148-140.ap-northeast-2.compute.amazonaws.com  SSH


[root@ns2 ~]# ssh -i ~/emr-key2.pem hadoop@ec2-52-79-148-140.ap-northeast-2.compute.amazonaws.com



EMR > Steps 에서 Hive 스크립트 실행을 통해 CLI로도 실행 시킬수 다.


hive-script --run-hive-script --args -f s3://ap-northeast-2.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q -d INPUT=s3://ap-northeast-2.elasticmapreduce.samples -d OUTPUT=s3://emr-hive2/


Master 에서 스크립트 실행

hive-script --run-hive-script --args -f s3://ap-northeast-2.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q -d INPUT=s3://ap-northeast-2.elasticmapreduce.samples -d OUTPUT=s3://emr-hive2/ouput-cli


입력:

2014-07-05 20:00:00 LHR3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0%20(MacOS;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9


스크립트:

-- Summary: This sample shows you how to analyze CloudFront logs stored in S3 using Hive

-- Create table using sample data in S3.  Note: you can replace this S3 path with your own.

CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (

  DateObject Date,

  Time STRING,

  Location STRING,

  Bytes INT,

  RequestIP STRING,

  Method STRING,

  Host STRING,

  Uri STRING,

  Status INT,

  Referrer STRING,

  OS String,

  Browser String,

  BrowserVersion String

)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'

WITH SERDEPROPERTIES (

  "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$"

) LOCATION '${INPUT}/cloudfront/data';

-- Total requests per operating system for a given time frame

INSERT OVERWRITE DIRECTORY '${OUTPUT}/os_requests/' SELECT os, COUNT(*) count FROM cloudfront_logs WHERE dateobject BETWEEN '2014-07-05' AND '2014-08-05' GROUP BY os;




<6>  S3  > emr-hive2폴더에서 EMR 결과 확인하기


1

출력:

파일명 : 000000_0


내용 :

Android855

Linux813

MacOS852

OSX799

Windows883

iOS794




2

부가 설명1

EMR생성시 Advance 옵션으로 다양한서비스를 추가할수 있다.



3

EMR , S3 삭제하기

비용이 나오지 않도록   실습종료후  만들어진  EC2는 반드시 삭제한다.!!!



4

참고

docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html


https://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-gs-process-sample-data.html




<7> (몰아보기)  EMR 실습


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


감사합니다.


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