amazon emr 고급 활용 기법 - aws summit seoul 2017
TRANSCRIPT
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
홍준혁 솔루션즈 아키텍트, 아마존웹서비스 코리아오재혁 팀장, HYPERCONNECT
Amazon EMR 고급활용 기법HYPERCONNECT의 EMR을 활용한 분석 사례
본 강연에서 다룰 내용
Amazon EMR 소개
Amazon EMR과 함께 다양한 어플리케이션 활용
Amazon EMR운영 모범 사례
고객 활용사례
Amazon EMR 소개
Amazon EMR은 관리형 하둡 서비스입니다
On-premise Amazon EMR하둡 w/ EC2
여러분의 경험을 동일하게 활용할 수 있습니다
Amazon EMR
다양한 서비스와 함께 구축이 가능합니다.
Amazon DynamoDB
Amazon RDSAmazon Kinesis
Amazon Redshift
Amazon S3
Amazon EMR
Amazon EMR과 함께다양한 어플리케이션 활용
데이터 분석 파이프라인
수집 시각화저장 처리
데이터 소비
효율적인 파이프라인을 만들려면
안전하고 비용 효과적인 단일 데이터 저장소 구축
데이터에 대한 SQL 인터페이스 제공
분석 워크로드간 독립성 유지
목적에 맞는 데이터 분석, 시각화 도구 활용
새로운 분석 워크로드 지원 (스트림, 통계 등)
단일 저장소 기반의 데이터 수집
Amazon S3
단일 데이터 저장소
S3를 로그 수집기 저장소로 활용
<match s3.*.*>
...aws_key_id AWS_KEY_IDaws_sec_key AWS_SECRET/KEYs3_bucket BUCKET_NAMEs3_region REGION_NAMEpath DIRECTORY store_as txt
time_slice_format %Y%m%d%Htime_slice_wait 10m
<match s3.*.*>
S3를 ETL 저장소로도 활용
sqoop import-all-tables
--connect jdbc:mysql://ec2-34-xxx-xx-xxx.compute-1.amazonaws.com:3306/customer –username administrator –password password
--warehouse-dir s3://Bucket_name/Directory_name--num-mappers 4
--fields-terminated-by ‘,’
--lines-terminated-by ‘\n’
--exclude-tables current_dept_emp,
dept_emp_latest_date
수집 데이터의 SQL 인터페이스 활용
Amazon S3
워크로드간 독립성 확보
맵리듀스를 활용한 데이터 처리
loadlog = LOAD 's3://Bucket_name/Directory_name/Logfile_name'USING JsonLoader
('host:chararray,user:chararray,method:chararray,path:chararray,
code:INT,size:INT,referer:chararray,agent:chararray,time:chararray');
ip_data = GROUP loadlog BY host ;
ip_count = FOREACH ip_data GENERATE group AS time,COUNT(loadJson) as total_visits ;
sort_data = RANK ip_count BY total_visits DESC ;
store sort_data into 's3://Bucket_name/Logoutput_directory/' using PigStorage();
SQL on EMR의 활용
CREATE EXTERNAL TABLE Customer_info (
customer_no INT ,
birth_date DATE ,
first_name VARCHAR(14) ,
last_name VARCHAR(16) ,
gender STRING ,
login_date DATE
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE
LOCATION ‘s3://Bucket_name/Directory_name/Table_name/’
;
목적에 따른 다양한 데이터 소비
Amazon Quicksight
Amazon Quicksight를 활용한 BI분석
대화형 SQL을 활용한 분석 수행
Apache Spark Core
SparkSQL
SparkStreaming
ML GraphX
분산환경 확장성 제공
동적 리소스 관리
단일 프레임워크에서비즈니스 로직 구현
메모리 기반 빠른 성능 개발자를 위한 다양한언어 지원
새로운 분석 워크로드 적용
실시간 데이터 분석 아키텍쳐
Amazon Kinesis
Amazon S3
분석 코드 작성, 데이터 시각화 및대쉬보드 작성
실시간 데이터 전송을 위한 Amazon Kinesis
Shard 1
Shard 2
Shard n
Kinesis Producer Kinesis Consumer
Amazon Kinesis
아파치 스파크 데이터 프레임 활용
value1, value2, value3
value4, value5, value6
value7, value8, value9
value1, value2, value3
value4, value5, value6
value7, value8, value9
value1, value2, value3
value4, value5, value6
value7, value8, value9
Micro batch n-1 Micro batch n Micro batch n+1
User_id Content_id timestamp
Value1 Value2 value3
Value4 Value5 value6
Value7 Value8 value9
메모리테이블
Spark 어플리케이션 작성
val endpointUrl = https://kinesis.us-east-1.amazonaws.com
....
val numShards = kinesisClient.describeStream("spark-demo").getStreamDescription().getShards().size
....
val batchInterval = Seconds(30)
....
val kinesisStreams = (0 until numStreams).map { i =>
KinesisUtils.createStream(ssc, "app-spark-demo", "spark-demo", endpointUrl, regionName,InitialPositionInStream.LATEST, kinesisCheckpointInterval, StorageLevel.MEMORY_AND_DISK_2)
}
스트림데이터의 30초배치주기 설정
데이터프레임 생성
Spark 어플리케이션 작성
val schemaString = “user_id,content_id,timestamp“
....val tableSchema = StructType( schemaString.split(",").map(fieldName=> StructField(fieldName, StringType, true)))
....wordsDF.registerTempTable("realTimeTable")
스트림 데이터의 스키마 정의
메모리기반 테이블 저장
Zeppelin에서 분석 시각화
* https://aws.amazon.com/ko/blogs/big-data/analyze-realtime-data-from-amazon-kinesis-streams-using-zeppelin-and-spark-streaming/
데이터 과학자를 위한 아키텍쳐 확장
Amazon EMR
Amazon S3 데이터분석
부트스트랩 활용하여 외부 어플리케이션 구성
S3를 스크립트 저장소로 활용
R과 Spark 연동 패키지 활용
# Connect to Spark
library(sparklyr)
library(dplyr)
library(ggplot2)
sc <- spark_connect(master = "yarn-client“, version = ‘2.0.2')
R-Studio를 통한 데이터 과학자 활용
* https://aws.amazon.com/ko/blogs/big-data/running-sparklyr-rstudios-r-interface-to-spark-on-amazon-emr/
EMR을 활용한 빅 데이터 파이프라인 완성
Amazon Kinesis
Amazon EMR 운영모범사례
EMR Instance Fleets을 활용하세요
최대 5개까지 서로다른 타입 선택
Spot인스턴스 중단시온디맨드로 자동 전환
다양한 인스턴스를 선택하세요
업무 마스터 인스턴스 그룹 코어 인스턴스 그룹 태스크 인스턴스 그룹
배치 작업 On-demandOn-demand
또는 Instance-fleet 혼합Spot 또는
instance-fleet 혼합
데이터 변환 Spot Spot Spot
실시간 처리 On-Demand On-DemandSpot 또는
instance-fleet 혼합
개발 테스트 Spot Spot Spot
향상된 관리 기능을 활용하세요.
인스턴스 용량 설정YARN 리소스사용기반 설정
자동확장/축소선택
메타데이터를 관리하세요.
[ {
"Classification": "hive-site",
"Properties": {
"javax.jdo.option.ConnectionURL":"jdbc:mysql:\/\/RDS-endpoint:3306\/hive?createDatabaseIfNotExist=true",
"javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver",
"javax.jdo.option.ConnectionUserName": "username",
"javax.jdo.option.ConnectionPassword": "password"
}
} ]
aws emr create-cluster --release-label emr-5.4.0 --instance-type
m3.xlarge --instance-count 2 --applications Name=Hive --
configurations hivemetadata.json --use-default-roles
다양한 데이터 포맷을 활용하세요
“시간, 언어, 공간의 제약을 넘어 인류 개개인의 도달가능한인간관계를 전 세계로 넓힌다”
• 2014년 3월 엔지니어들을 주축으로 설립
• 비디오 & 소셜네트워킹 기술스타트업
• 약 20개 국적의 100명 이상의직원들이 근무 중
• 화면을 넘길 때마다 전 세계의 새로운 사람들을 만날 수 있는 ‘소셜 디스커버리‘ 플랫폼
• 최초로 WebRTC 를 모바일에 적용해 상용화
• 주요 기능 - 친구추가, 실시간 음성 번역, 얼굴인식 스티커 등
• 주요 성과
- 전 세계 200여 개 국가에서 1억 다운로드
- 160억 회 이상의 누적 매치
- 2015, 2016 구글플레이 올해의 앱 선정
데이터 분석 플랫폼 구축 목표
• 다양한 분석 수요에 따른 데이터 추출 / 변환 / 적재
• DataFlow 기획 / 제작 / 관리
• 대쉬보드 / 레포트 / EDA 도구 제공
• 이상 행동 탐지, 매칭 상대 추천 등 데이터 기반 서비스 제작
1년전에는
서비스데이터베이스
분석데이터베이스
레포트생성
하지만 사용자 증가에 따라
대용량 데이터에 대한 처리 고민• 5천만 매치 데이터 / 일
• 7억건 이벤트 / 일
• 1T 생성 / 일
Amazon S3와 Redshift를 활용하여
• 다양한 데이터 수집 가능
• 데이터 처리 시간 단축
Event log
Batch AnalysisAd-hoc Analysis
Reporing
3rd party Data
Service DB
집계 시간 – 2시간 47분
집계 시간 – 9시간 08분
3배 단축
다양한 요구 등장
대용량 데이터에 대한 안정적 처리 필요
• 이벤트 로그의 전처리 과정 단축
• 배포 후 실시간 확인
• Ad-hoc레포트를 위한 데이터 준비 필요
다양한 업무 요구사항 충족을 위해
Amazon EMR을 선택한 이유
• S3 에 보관하고 있는 데이터의 접근성이 높음
• CPU bound (auto scaling) 에 대한 보장
• IO bound (S3) 에 대한 보장
• 보고서 작성을 위한 SQL의 활용
Amazon EMR (Hive)을 도입하여
시작시간 종료시간 처리시간
07-Apr-2017 09:26:33
07-Apr-2017 09:44:59 18.43min
Hourly Sessionizing 소요시간12배 향상
Amazone EMR을 활용한 플랫폼 구축
Event log
Amazon S3
Referrer
Access ControlKPI Dashboard
Aggregation(Short-term) Adhoc Anaysis
Sessionizing(Long-term) Adhoc Anaysis
Realtime Reporting /Anaysis
새로운 도전과제
• 회원정보등의 데이터 재처리
• Azar 모바일 이벤트 데이터 수집
• 효과적인 비즈니스 보고서 작성 요청 대응
To-Be 아키텍쳐
Amazon Kinesis
Amazon Quicksight
맺음말
꼭 기억해 주세요!!!
• S3를 활용한 안전하고 비용 효과적인 저장소를 구축하세요.
• 분석 워크로드간 독립성을 유지하세요.
• 다양한 데이터 분석, 시각화 도구 활용하세요.
• Spot Fleets을 활용하여 비용을 절감하세요.
• 관리 자동화를 위해 오토 스케일링을 설정하세요.
본 강연이 끝난 후…
Amazon EMR 자습서 및 샘플코드를 참조하세요.
https://aws.amazon.com/articles/Elastic-MapReduce
Amazon EMR 블로그를 통해 다양한 소식 및 사용 사례를
참조하세요.
https://aws.amazon.com/ko/blogs/aws/category/amazon-emr/
Thank you!
함께 해주셔서 감사합니다!
https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에참여하시면, 행사 후 기념품을 드립니다.
#AWSSummitKR 해시태그로 소셜 미디어에여러분의 행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜채널로 공유될 예정입니다.
여러분의 피드백을 기다립니다!