Spark와 R을 연동한
빅데이터 분석
2017.10
강병엽 Ph. D.
네이버 / Data Science
ⓒ NAVER Corp.
목차
1. Big Data
2. Hadoop
3. Spark
4. C3
5. sparklyr
6. Machine Learning
7. 맺음말
Big Data
일반
4
Data Science
• 4차 산업 혁명 시대에 중요한 역할을 담당
• 데이터를 통해 얻게 되는 통찰이 중요한 자산
• 특히, 빅데이터를 분석하는 기술이 핵심
Düsseldorf Data Science Meetup
일반
5
검색어 트렌드
• Google Trends: 2008.11 ~ 2017.10
 Hadoop  Big Data
일반
6
검색어 트렌드
• 네이버 트렌드: 2010.03 ~ 2017.02
일반
7
검색어 트렌드
• 네이버 트렌드: 2010.03 ~ 2017.02
일반
8
검색어 트렌드
• 알파고(AlphaGo)
January 28, 2016 Nature YouTube - DeepMind
일반
9
Big Data
• 축적되는 데이터의 양이 어마어마함
• 내가 원하는 시간 안에 결과를 얻지 못하면 아무 의미 없음
• 시시각각 데이터가 주는 정보가 변함
VelocityVolume Variety
Hadoop
일반
11
Hadoop
• 두 가지 목적
① 정말 매우 큰 데이터를 저장할 수 있어야 함
② 그 데이터를 이용해서 연산을 수행할 수 있어야 함
• 이를 위한 두 가지
① HDFS(Hadoop Distributed File System)
② MapReduce
HDFS + MapReduce = Hadoop
일반
12
Hadoop
• Hadoop ecosystem
https://www.edureka.co/blog/hadoop-ecosystem
Spark
일반
14
Spark
• 대용량 데이터 처리를 위한 빠르고 범용적인 엔진
• Speed
• Hadoop에 비해 100배 정도 빠르다. (in memory)
• Hadoop에 비해 10배 정도 빠르다. (on disk)
• 사용하기 쉽다.
일반
15
Spark
• Spark의 구성
• Spark core
• RDD(Resilient Distributed Dataset)를 정의하는 API의 가반
• Spark SQL, Spark Streaming, Mllib, GraphX
https://spark.apache.org
일반
16
Spark
• Spark를 어떤 언어로 배울 것인가?
일반
17
Spark
• python과 scala의 spark에서의 수행 성능 비교
http://emptypipes.org/2015/01/17/python-vs-scala-vs-spark/
일반
18
Spark
• python으로 spark 배우기
• ipython으로 pyspark shell을 실행
• word count 예제
일반
19
Spark
• Spark 실행 방법
• pyspark shell, scala shell
• Spark notebook
• Zeppelin
C3
일반
21
C3
• Common Central Cluster
• (오픈소스 기반) 분산 클러스터 플랫폼
• 대용량 멀티테넌트 데이터 처리 클러스터
• 장비 스펙(2016년 12월 기준)
• 525대
• Memory: 33.18 TB
• CPU: 14,981개
• HDFS: 8.55 PB
• 사용현황
• 400여 개의 작업을 동시 수행(2016년 12월 기준)
일반
22
C3
기능 Toolset
데이터 처리 MapReduce, Hive, Spark, Storm
Workflow Oozie, Airflow
Containerization YARN Container, Docker Container
데이터 저장 HDFS, Hbase, Kafka
데이터 분석 툴 Zeppelin
Web Interface Hue
Deep Learning Tensorflow, Caffe, Torch, Theano
sparklyr
일반
24
sparklyr
• Apache spark에 대한 R 인터페이스
• 친숙한 dplyr 명령어를 그대로 사용 가능
• select
• filter
• mutate
• group_by
• summarize
• join
• Machine learning
• Extensions
• Calls the full spark API
• invoke() function
https://spark.rstudio.com/index.html
일반
25
sparklyr
• Spark에 접속하기
• R에서 spark로 데이터 옮기기
일반
26
sparklyr
• dplyr 사용하기
• flights_tbls
• flights_tbl은 spark에 있는 flights라는 데이터를 컨트롤 하는 R object
일반
27
sparklyr
• dplyr 사용하기
• R에 있는 데이터
• Spark에 있는 데이터
일반
28
sparklyr
• dplyr 사용하기
• flights_tbls
• 실행 결과가 동일함
일반
29
sparklyr
• Data science using R & spark
https://spark.rstudio.com/index.html
Machine Learning
일반
31
Machine Learning
• MLlib: spark에 있는 머신 러닝 라이브러리
• Supervised Learning
• decision tree
• gradient boosted trees
• linear regression / logistic regression / generalized linear regression
• multilayer perceptron
• naive Bayes
• random forest
• Unsupervised Learning
• matrix factorization / collaborative filtering
• kmeans clustering
• Latent Dirichlet allocation
• PCA
일반
32
Naive Bayes Classifier
• 베이즈 정리에 기반한 단순 분류기
• posterior ∝ prior *likelihood
𝑝 𝐶 𝑋1, ⋯ , 𝑋 𝑑 ∝ 𝑝 𝐶 𝑝 𝑋1, ⋯ , 𝑋 𝑑 𝐶
= 𝑝 𝐶 𝑝 𝑋𝑗 𝐶
𝑑
𝑗
일반
33
Naive Bayes Classifier
• Titanic data: https://www.kaggle.com/c/titanic
일반
34
Naive Bayes Classifier
• Titanic data: https://www.kaggle.com/c/titanic
일반
35
Machine Learning
• Deep learning & A.I.
• Pytorch
• TensorFlow
• Caffe2
• 실무에서는 학습 데이터의 가공을 위해 spark를 주로 사용함
맺음말
일반
37
맺음말
Hadoop를 배웠으면 spark도 얼른 배우세요!
Hadoop을 모르셔도 spark는 얼른 배우세요!
Spark 모르셔도 R만 잘 하시면 big data 분석할 수 있어요!
Big data에 대한 machine learning으로 새로운 가치를 창출해 보세요!
Thank you

RUCK 2017 - 강병엽 - Spark와 R을 연동한 빅데이터 분석