빅데이터 분석을 위한 r의 활용 -...

110
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - Jinseog Kim Applied Statistics Dongguk University [email protected] 2016. 08. 12 Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 1 / 110

Upload: buitruc

Post on 01-Aug-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

.

.

빅데이터 분석을 위한 R의 활용- Hadoop/Spark/H2O -

Jinseog Kim

Applied StatisticsDongguk University

[email protected]

2016. 08. 12

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 1 / 110

Page 2: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Contents

...1 R을 이용한 고성능 컴퓨팅

...2 HadoopHadoop 개요Hadoop 설치 및 구동

...3 R과 HadoopRhadoop 프로그램 예제

...4 아파치 스파크아파치 스파크 소개

sparkR 예제

...5 H2OH2O 소개Examples for H2O

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 2 / 110

Page 3: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R을 이용한 고성능 컴퓨팅

1. R을 이용한 고성능 컴퓨팅

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 3 / 110

Page 4: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R을 이용한 고성능 컴퓨팅

R을 이용한 고성능 컴퓨팅

...1 Large memory and out-of-memory datadata.table, sqldf : extension of data.frameff, bigmemory

...2 Multicore or cluster computingsnow, Rmpi: parallel computing within clustersmulticore : parallel in single linux machineparallel: snow + multicoredoParallel: doMC + doSNOW + foreach

...3 R + Hadoop (+ Spark + H2O)rhipe, rhadoopsparkRH2O

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 4 / 110

Page 5: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R을 이용한 고성능 컴퓨팅

Parallel computing with doParallel (Windows)

- Random Forest with 10,000 trees- for R

randomForest(x, y, ntree=10000)

library(foreach)

library(randomForest)

x <- iris[,1:4]; y <- iris$Species

rf <- randomForest(x, y, ntree=10000)

library(doParallel)

registerDoParallel(cores=detectCores())

rf <- foreach(ntree=rep(2500, 4), .combine=combine, .packages="randomForest") %dopar%

randomForest(x, y, ntree=ntree)

stopImplicitCluster()

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 5 / 110

Page 6: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R을 이용한 고성능 컴퓨팅

Parallel computing with parallel (Linux)

library(parallel)

library(MASS)

RNGkind("Super-Duper")

mc.cores <- detectCores()

results <- mclapply(rep(100, 4),

function(nstart){

kmeans(Boston, 4, nstart=nstart)

},

mc.cores=mc.cores)

# summarize the results

i <- sapply(results, function(result) result$tot.withinss)

result <- results[which.min(i)]

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 6 / 110

Page 7: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop

2. Hadoop

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 7 / 110

Page 8: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

2.1 Hadoop 개요

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 8 / 110

Page 9: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop의 역사

2002–2005: Nutch 프로젝트 (웹 크롤러)중 Nutch Distributed Filesystem (NDFS),MapReduce implementation

2006: NDFS/MapReduce가 Lucene의 subproject인 Hadoop으로 독립

2008: Doug Cutting 10,000개 이상의 리눅스 클러스터에서 Hadoop 애플리케이션실행 발표

Apache재단의 top-level project로 승격

Hadoop의 어원 :

Doug Cutting의 아들이 장난감⇒ High-Availability Distributed Object-Oriented Platform

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 9 / 110

Page 10: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop 소개

Hadoop: 컴퓨터 클러스터에서 분산저장 및 분산처리 (계산)을 위해 자바로 작성된자유소프트웨어 프레임워크

HDFS(Hadoop Distributed File System) : Distributed Storage

MapReduce : Distributed Computation by Divide and conquer

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 10 / 110

Page 11: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

HDFS

HDFS는 Google File System (GFS)1에서 유래

컴퓨터 클러스터에서 대용량 데이터를 분산저장하는 시스템

1대의 Master서버와 여러 대의 worker서버들로 구성

1Ghemawat et al. (2003). The Google file systemJinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 11 / 110

Page 12: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

HDFS의 구성

Name Node:HDFS의 Master 노드데이터 노드에 있는 파일 및 디렉토리 테이블 관리

Data Node:HDFS의 worker 노드실제 자료가 저장됨

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 12 / 110

Page 13: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

HDFS의 구조

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 13 / 110

Page 14: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

HDFS의 특징

저렴한 비용: 저사양의 컴퓨터들로 클러스터 구성

확장성: 컴퓨터를 클러스터에 추가하기가 용이

안전성: 일부 컴퓨터의 물리적 고장이 발생하더라도 데이터의 복원 및 계산가능

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 14 / 110

Page 15: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

HDFS file format

모든 HDFS 파일은 (<key>, <value>) 쌍들로 구성됨

Text file format:HDFS파일의 기본형line 주소가 <key> , line text 내용이 <value>

Sequence file format:<value>가 binary 형태 (eg. sound, image, R Data objects, ...)모든 종류의 R 객체가 시퀀스파일의 key또는 value가 될 수 있음

Map file format:Sequence파일에 index를 추가 검색속도가 빠름

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 15 / 110

Page 16: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

MapReduce

구글의 MapReduce에서 유래 2

분산저장된 large scale자료의 처리를 위한 프로그래밍 모델(cf) 병렬연산: MPI

HDFS 데이터에 대한 병렬 연산을 지원병렬연산은 Map 함수와 Reduce 함수를 통해 구현

2Dean & Ghemawat (2004). MapReduce: Simplified Data Processing on Large Clusters.Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 16 / 110

Page 17: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Map + Reduce

Intermediate Data in HDFS

Local Data Local Data Local Data

Map Map Map

Partial Result Partial Result Partial Result

Reduce Reduce

Aggregated Result

Distributed Data in HDFS

Final result in HDFS

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 17 / 110

Page 18: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

MapReduce 시스템 구성

JobTracker:MapReduce시스템의 Master node에서의 processMapReduce Job 실행 및 Task tracker 관리

TaskTracker:MapReduce시스템의 Worker nodes에서의 process실제 Worker nodes에서 일어나는 map 및 reduce job을 트래킹

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 18 / 110

Page 19: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

MapReduce의 특징

Fault tolerance : 특정노드에서 오류 발생시 재실행 혹은 다른 노드에서 실행

일부 노드 (task tracker)에서 오류 발생 또는 지체시 전체 작업이 지체됨

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 19 / 110

Page 20: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

MapReduce operations

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 20 / 110

Page 21: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

MapReduce 예제

Split 단계: 입력 데이터를 작은크기로 분할, map task로 할당

Map 단계: 분할 데이터를 사용자정의 알고리즘에 따라 (key/value)쌍으로 처리

Shuffle/Sort 단계: Map에서 생성된데이터를 shuffle, key에 대하여정렬 후 reduce task로 전송

Reduce 단계: 동일 key에 해당하는데이터를 사용자가 정의한 reduce함수에 따라 처리

Output 단계: 최종결과는 사용자가지정한 HDFS 디렉토리에 저장됨

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 21 / 110

Page 22: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop ecosystem

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 22 / 110

Page 23: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop ecosystem

Mahout: machine learning algorithms

Pig: High level language(such as PERL) to analyze large datasets

Hive: Distributed data warehouse for HDFS with SQL-like language

Hbase: A distributed, column-oriented database. HBase supports both batch-stylecomputations using MapReduce and point queries (random reads).

Sqoop: A tool for efficiently moving data between relational databases and HDFS.

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 23 / 110

Page 24: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop Distributions

CDHMapRHorthonworks, ...

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 24 / 110

Page 25: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop usecases

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 25 / 110

Page 26: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

Hadoop 2.x

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 26 / 110

Page 27: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 개요

YARN : Yet Another Resource Negotiator

MapReduce 시스템의 문제점Job tracker: 자원배분과 Job 관리 동시 수행 ⇒ 클러스터에서 병목현상

Task tracker: 한 노드에서 실행할 수 있는 Map과 Reduce용 task 개수 제한, 여유자원활용 못함, Map과 Reduce만 실행 가능확장성 제한 : 최대 4,000 Node와 40,000 Task까지만 확장 가능

Yarn- Job tracker ⇒ Resource Manager + Application Manager- Task tracker ⇒ Node Manager + Application master

Better ScalabilityMapreduce 외에 다양한 어플리케이션을 실행가능Application마다 자원(CPU, Memory) 효율적 할당

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 27 / 110

Page 28: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

2.2 Hadoop 설치 및 구동

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 28 / 110

Page 29: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 설치

설치환경

Linux : Ubuntu, CentOS, etc.Windows

Windows Server2008 R2 / 2012(64bit)Python 2.7.5Microsoft Visual C++ 2010 Redistributable Package(64bit)Microsoft .NET framework 4.0Java JDK 1.6 update 31 64-bit / Java JDK 7 64-bitHDP(Hortonworks Data Platform)

Mac OS : Mac용 환경 설정 추가(보안관련 설정)

준비사항

JAVASSHHADOOP source 설치 및 환경설정

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 29 / 110

Page 30: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

설치환경 및 준비사항

Java 설치: 하둡은 자바 기반의 프레임워크; java 설치 필요

$ sudo apt-get install default-jdk

SSH 설치 및 공개 키 설정:공개키 설정 : 암호 없이 worker nodes에 접속$ sudo vi/etc/ssh/sshd_config$ ssh-keygen -t rsa -P ""

(master, slaves) 디렉터리 및 파일 권한 변경

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 30 / 110

Page 31: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop system user의 추가

새로운 하둡 사용자 계정 hduser를 생성하고 hadoop_group와 sudo 그룹으로 지정한다.

$ sudo addgroup hadoop

$ sudo adduser --ingroup hadoop hduser

$ sudo adduser hduser sudo

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 31 / 110

Page 32: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 설치

하둡소스 다운로드

$ wget http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.6.0 \

/hadoop-2.6.0.tar.gz

하둡소스 압축풀기 및 권한 설정

$ tar xvzf hadoop-2.6.0.tar.gz

$ sudo mkdir /usr/local/hadoop

$ sudo chown -R hduser:hadoop /usr/local/hadoop

$ cd hadoop-2.6.0

hadoop-2.6.0$ sudo mv * /usr/local/hadoop

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 32 / 110

Page 33: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 설정

하둡 설정을 위해서 아래의 설정 파일들을 수정함

...1 .bashrc

...2 /usr/local/hadoop/etc/hadoop/hadoop-env.sh

...3 /usr/local/hadoop/etc/hadoop/core-site.xml

...4 /usr/local/hadoop/etc/hadoop/mapred-site.xml

...5 /usr/local/hadoop/etc/hadoop/hdfs-site.xml

...1 .bashrc : 하둡 사용자 환경

...2 hadoop-env.sh : 하둡 구동 셀 스크립트 실행시 필요한 환경변수 설정- JAVA 설치 경로

...3 core-site.xml : 하둡 공통 환경변수 설정- HDFS URL, temporary directory,…

...4 hdfs-site.xml : HDFS specific 환경변수 설정- name node, data node, File replication count, block size,…

...5 mapred-site.xml : MapReduce specific 환경변수 설정- # of map/reduce tasksJinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 33 / 110

Page 34: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

.bashrc

*bashrc* 파일을 열어 아래 내용을 추가함

...

#HADOOP VARIABLES START

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export HADOOP_INSTALL=/usr/local/hadoop

export PATH=$PATH:$HADOOP_INSTALL/bin

export PATH=$PATH:$HADOOP_INSTALL/sbin

export HADOOP_MAPRED_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_HOME=$HADOOP_INSTALL

export HADOOP_HDFS_HOME=$HADOOP_INSTALL

export YARN_HOME=$HADOOP_INSTALL

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"

#HADOOP VARIABLES ENDJinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 34 / 110

Page 35: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

hadoop-env.sh

hadoop-env.sh에 JAVA_HOME 환경변수를 아래와 같이 지정

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 35 / 110

Page 36: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

core-site.xml:

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/app/hadoop/tmp</value>

<description>A base for other temporary directories.</description>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:54310</value>

<description>...</description>

</property>

</configuration>

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 36 / 110

Page 37: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:54311</value>

<description>The host and port that the MapReduce

...

</description>

</property>

</configuration>

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 37 / 110

Page 38: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

hdfs-site.xml

하둡 클러스터의 모든 호스트에서 *namenode*와 *datanode*를 위한 디렉토리,데이터블럭의 복제수 등을 지정함

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

<description>Default block replication.

... </description>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/usr/local/hadoop_store/hdfs/namenode</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/usr/local/hadoop_store/hdfs/datanode</value>

</property>

</configuration>

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 38 / 110

Page 39: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

하둡 파일시스템 포맷

* 하둡파일시스템의 파일이 모두 포맷되기 때문에 하둡을 구동하기 전 한번만 실행

$ hadoop namenode -format

---

DEPRECATED: Use of this script to execute hdfs command is deprecated.

Instead use the hdfs command for it.

16/06/20 18:56:18 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host = stat-Precision-Tower-7810/127.0.1.1

STARTUP_MSG: args = [-format]

STARTUP_MSG: version = 2.6.0

STARTUP_MSG: classpath = /usr/local/hadoop/etc/hadoop:/

...

16/06/20 18:56:19 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at stat-Precision-Tower-7810/127.0.1.1

************************************************************/

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 39 / 110

Page 40: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

하둡 시스템 구동

하둡 시스템 명령어 (/usr/local/hadoop/sbin)

$ sudo su hduser

$ start-all.sh (start-dfs.sh && start-yarn.sh)

15/04/18 16:43:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Starting namenodes on [localhost]

localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hduser-namenode-laptop.out

localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hduser-datanode-laptop.out

Starting secondary namenodes [0.0.0.0]

0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-hduser-secondarynamenode-laptop.out

,...

localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hduser-nodemanager-laptop.out

We can check if it's really up and running:

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 40 / 110

Page 41: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

jps

하둡 프로세스 체크 (Java VM process status tool)

$ jps

---

37556 NameNode

37698 DataNode

38414 Jps

38174 ResourceManager

37960 SecondaryNameNode

38324 NodeManager

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 41 / 110

Page 42: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop Web Interfaces

- web UI of the NameNode daemonhttp://localhost:50070/

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 42 / 110

Page 43: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 명령어

명령어 설명

$ hadoop fs [options] File system 관련 명령$ hadoop version 버전 check$ hadoop namenode [options] NameNode 실행, 포맷,…$ hadoop datanode 데이터노드 실행

$ hadoop jobtracker JobTracker 실행$ hadoop tasktracker TaskTracker 실행$ hadoop jar <jar> [mainClass] .. Java 실행파일 (jar) 이용 MapReduce실행$ hadoop job [options] MapReduce실행, 모니터링, 리스트,

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 43 / 110

Page 44: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 명령어

$ hadoop fs -cmd <args>

# cmd : 지정한 파일 명령어

# <args> : 명령에 따른 인자

cmd 설명

ls HDFS 디렉터리 및 파일 목록 표시mkdir HDFS 경로에 디렉터리 생성cat HDFS 파일 (들)을 화면에 표시copyFromLocal 로컬 파일을 HDFS로 복사copyToLocal HDFS 파일을 로컬 파일로 복사cp HDFS 파일 (들) 복사get HDFS 파일을 로컬 파일로 복사 (copyToLocal 명령과 유사)put 로컬 파일 (들)을 HDFS로 복사rm HDFS 파일 삭제

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 44 / 110

Page 45: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 명령어 예제

# HDFS 디렉토리(test_dir)내의 파일 목록 표시

$ hadoop fs -ls test_dir

# HDFS 폴더 생성

$ hadoop fs -mkdir /test/hadoop

# 로컬 README.txt 파일을 HDFS에 저장

$ hadoop fs -put README.txt /test/hadoop/README.txt

# HDFS을 로컬파일로 복사

$ hadoop fs -copyToLocal /test/output local/output.txt

# HDFS 파일(들) 삭제

$ hadoop fs -rm /test/hadoop/README.txtJinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 45 / 110

Page 46: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 명령어 예제 (계속)

- Word count java program : hadoop-example-1.0.3.jar- README.txt 파일의 단어를 카운팅 output에 결과 저장

$ hadoop jar ~/hadoop/hadoop-examples-1.0.3.jar \

wordcount /test/README.txt /test/output

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 46 / 110

Page 47: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Hadoop 명령어 예제 (계속)

- Word count 결과를 확인

$ hadoop fs -cat /test/output/p*

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 47 / 110

Page 48: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

Hadoop Hadoop 설치 및 구동

Implement of MapReduce program

JAVA → JAR(JAVA Archive)R + Hadoop

Hadoop streaming (JAR) + R (mapper & reduce function)$ hadoop jar hadoop-streaming-xxx.jar

-mapper mapper.R-reducer reducer.R-input ...-output ...

R only (see next chapters)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 48 / 110

Page 49: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

3. R과 Hadoop

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 49 / 110

Page 50: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

하둡과 R의 연동

RHIPE(Saptarshi Guha, 2010)R and Hadoop Integrated Processing EnvironmentGoogle protocol buffer: HDFS files ↔ R객체로 변환R콘솔에서 job status tracking 가능

RHadoop(REvolution Analytics, 2011)rmr2: MapReduce 관련 함수 제공rhdfs: HDFS 파일 관리를 위한 함수 제공rhbase: 분산 데이터베이스인 HBase를 지원하는 함수 제공https://github.com/RevolutionAnalytics/

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 50 / 110

Page 51: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

Streaming/Rhipe/Rhadoop비교

HADOOP RHIPE RHADOOP(Streaming)

Installation Easy High ModerateUser friendly High Moderate EasyTechnologies Streaming own functions Streaming

with Protocol BuffersMemory usage – – use additional memory

for reducer values

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 51 / 110

Page 52: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

Rhipe vs Rhadoop

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 52 / 110

Page 53: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

RHIPE 작동원리

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 53 / 110

Page 54: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

Rhadoop 설치

https://github.com/RevolutionAnalytics/RHadoop/wikiPrerequisitesR packages: rJava, Rcpp, Rcurl, httr,

devtools, plyr, reshapes

$ sudo apt-get install libcurl4-openssl-dev

$ sudo apt-get install curl

$ sudo apt-get install git

Set Environment variables (/usr/local/lib/R/etc/Renviron.site)

#Hadoop 실행파일 및 hadoop-streaming*.jar 경로

HADOOP_CMD / HADOOP_STREAMING:Download & installhttps://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads$ git clone git://github.com/RevolutionAnalytics/rhdfs.git$ sudo R CMD INSTALL --library=/usr/local/lib/R/library \

rhdfs_1.0.5.tar.gzJinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 54 / 110

Page 55: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

Rhadoop 함수(rhdfs)

rhdfs함수 기능 설명

hdfs.init() initializationhdfs.ls(path) HDFS파일 검색hdfs.put(src, dest) 로컬파일을 HDFS에 복사hdfs.get(src, dest) HDFS파일을 로컬파일로 복사hdfs.copy(src, dest) HDFS파일을 HDFS로 복사hdfs.rm(...) 파일 또는 폴더를 삭제

hdfs.move(src, dest) src 를 dest 으로 이동hdfs.line.reader(,n) text file line단위 읽기

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 55 / 110

Page 56: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

Rhadoop 함수(rmr)

rmr 함수 기능 설명

to.dfs(kv, output=, format) R list를 HDFS에 저장from.dfs(input=, format=) HDFS 파일을 R list로 변환mapreduce() Mapreduce job 정의 및 수행keyval(key, val) <key, value> 생성

dfs.exists(file) HDFS 파일 유무 checkrmr.sample(...) HDFS 파일에서 표본 추출

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 56 / 110

Page 57: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop

Rhadoop 프로그램 구조

...1 Rhadoop 시작

library(rhdfs);

rhdfs.init(); # 시 rhdfs로

library(rmr2);

...2 Map/Reduce 정의

map_ftn <- function(k, v) { … }

reduce_ftn <- function(k,v) { … }

...3 MapReduce 실행out <- mapreduce(input="", output="",

map=map_ftn, reduce=reduce_ftn)

...4 실행 결과 확인

result <- from.dfs(out)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 57 / 110

Page 58: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop Rhadoop 프로그램 예제

3.1 Rhadoop 프로그램 예제

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 58 / 110

Page 59: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop Rhadoop 프로그램 예제

Rhadoop: Word Count

inputfile <- "/test/data/README.txt"

hdfs.put(src="README.txt", dest=inputfile)

# hadoop fs -copyFromLocal README.txt /test/data/README.txt

outputfile <- "/test/out/ex4"

#map function

map <- function(key, val){

val <- gsub("[.,/()-]", " ", val)

words.vec <- unlist(strsplit(x = val, split = " "))

keyval(words.vec, 1)

}

#reduce function

reduce <- function(word, counts ){

keyval(word, sum(counts))

}

#mapreduce

result <- mapreduce(input = inputfile, output = outputfile,

input.format = "text",

map = map, reduce = reduce, combine = T)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 59 / 110

Page 60: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

R과 Hadoop Rhadoop 프로그램 예제

Rhadoop: Word Count-conti

# wordcount output

freq.dfs <- from.dfs(result)

freq <- freq.dfs$val

word <- freq.dfs$key

oidx <- order(freq, decreasing=T)[1:10]

# Words frequency plot

barplot(freq[oidx], names.arg=word[oidx] )

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 60 / 110

Page 61: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크

4. 아파치 스파크

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 61 / 110

Page 62: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

4.1 아파치 스파크 소개

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 62 / 110

Page 63: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Apache Spark 개요

Hadoop MapReduce의 문제점부하가 심하고 속도가 느림 - 처리과정마다 하드디스크를 거쳐 데이터 공유MapReduce 프로그래밍은 어렵고 복잡한 코드

Aparche Spark (UC Berkley, AMPLab, 2009)빠르고 일반적인 목적의 분산 클러스터 플랫폼 (MapReduce에 비해 10 100배 빠름)인메모리 컴퓨팅(RDD 방식의 메모리 사용 극대화)Hive, Storm, Mahout 기능과 연동Java, python, scala, R을 지원

Spark 적용 환경환경: Hadoop, Mesos, stand alone, cloudData souces: HDFS, Cassandra, Hbase, Hive, Tachyon, any Hadoop data source

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 63 / 110

Page 64: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Apache Spark 역사

2009년 UC Berkley, AMPLab. MapReduce의 속도문제

2011년 High level Component 개발

2013년 Apache로 이관 후 Top Project 승격

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 64 / 110

Page 65: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Apache Spark IDEA

MapReduce의 Disk access → MemoryRDD

read only (RAM을 ROM처럼)fault tolerancetransformation (map, reduce, join) action

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 65 / 110

Page 66: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

RDD vs. DataFrame in Spark

RDD (Resilient Distributed Dataset) : 일반적인 Spark의 일반적인 데이터 형태변경불가(Immutable)Fault TolerantDistributed

DataFrame: Table 형태의 정형화된 데이터 포맷,연산시 최적화 가능

SQL 연산 가능

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 66 / 110

Page 67: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Companies Organizations

Amazon, eBay Inc., IBM Almaden

Baidu, Tencent

Samsung Research America, SK Telecom, Kakao, SK CC

https://cwiki.apache.org/confluence/display/SPARK/Powered+By+Spark

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 67 / 110

Page 68: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

스파크의 구성

JAVA, Scala, Python 그리고 R 인터페이스 제공

Spark SQL : SQL과 구조화된 자료의 처리

MLlib : 머신러닝

GraphX : 그래프 프로세싱

Spark streaming : 실시간 데이터의 처리

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 68 / 110

Page 69: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Spark의 설치

Spark 다운로드:아파치 스파크의 공식 홈페이지 (http://spark.apache.org/ )

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 69 / 110

Page 70: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Spark의 설치 - Windows

...1 Choose a Spark release : 1.6.1(Mar 09 2016)을 선택

...2 Choose a package type : Pre-built for hadoop 2.6을 선택

...3 Download Spark : spark-1.6.1-bin-hadoop2.6.tgz를 클릭하여 다운로드

...4 다운로드한 spark-1.6.1-bin-hadoop2.6.tgz를 압축을 풀고 저장

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 70 / 110

Page 71: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Spark의 설치-LINUX

...1 Scalar의 설치

...2 Spark의 설치

wget http://mirror.apache-kr.org/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz

tar xf spark-1.6.1-bin-hadoop2.6.tgz

sudo mv spark-1.6.1-bin-hadoop2.6 /usr/local/spark

...3 환경변수 설정 (.bashrc)

export SPARK_HOME=/usr/local/spark

export PATH=$SPARK_HOME/bin:$PATH

export LD_LIBRARY_PATH=$HADOOP_COMMON_LIB_NATIVE_DIR:$LD_LIBRARY_PATH

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 71 / 110

Page 72: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Spark 웹 UI

* 웹브라우저의 주소란에 http://localhost:4040 를 입력

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 72 / 110

Page 73: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Spark 웹 UI

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 73 / 110

Page 74: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

SparkR

Spark의 R API로써, R코드를 이용한 분산 컴퓨팅 환경에서 Spark 연산 가능

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 74 / 110

Page 75: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

SparkR의 실행 - 명령행(command prompt)

명령행에서 SparkR을 실행시키기 위해서는 커멘드 창을 열어 아래의 명령을실행시킨다.

> cd C:\\spark-1.6.1-bin-hadoop2.6\\spark-1.6.1-bin-hadoop2.6

> ./bin/sparkR

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 75 / 110

Page 76: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

RStudio에서 SparkR의 실행

#### 경 의 정

spark_install_path

<- "C:\\spark-1.6.1-bin-hadoop2.6\\spark-1.6.1-bin-hadoop2.6"

Sys.setenv(SPARK_HOME = spark_install_path )

Sys.setenv('SPARKR_SUBMIT_ARGS'=

'"--packages" "com.databricks:spark-csv_2.10:1.4.0" "sparkr-shell"')

#### 리 경로(library paths) 정

.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))

#### *SparkR* 리 로

library(SparkR)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 76 / 110

Page 77: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 아파치 스파크 소개

Initialize Spark Context and SQL Context

# Spark context의 생성

sc <- sparkR.init()

# Spark context로 SQL context의 생성

sqlContext <- sparkRSQL.init(sc)

SparkR에서는 SQLContext를 이용하여 로컬 R의 data frame, Hive table 또는 기타다양한 데이터 소스 (json, CSV, 등)로 부터 Spark의 기본 데이터 객체인 DataFrame을생성

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 77 / 110

Page 78: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

4.2 sparkR 예제

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 78 / 110

Page 79: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

SPARK의 시작

# Spark Context(JavaSparkContext)

sc <- sparkR.init()

# Spark context로 SQL context의 생성

sqlContext <- sparkRSQL.init(sc)

# Stop Spark

sparkR.stop()

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 79 / 110

Page 80: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Spark DataFrame

#R data.frame 로 sparkR DataFrame 생성

localDF <- data.frame(name=c("John", "Smith", "Sarah"), age=c(19, 23, 18))

# Convert local data frame to a SparkR DataFrame

df <- createDataFrame(sqlContext, localDF)

# Print its schema

printSchema(df)

# root

# |-- name: string (nullable = true)

# |-- age: double (nullable = true)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 80 / 110

Page 81: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Spark DataFrame from json file

# Create a DataFrame from a JSON file

path <- file.path(Sys.getenv("SPARK_HOME"), "examples/src/main/resources/people.json")

#peopleDF <- jsonFile(sqlContext, path)

peopleDF <- read.json(sqlContext, path)

printSchema(peopleDF)

# Register this DataFrame as a table.

registerTempTable(peopleDF, "people")

# SQL statements can be run by using the sql methods provided by sqlContext

teenagers <- sql(sqlContext, "SELECT name FROM people WHERE age >= 13 AND age <= 19")

# Call collect to get a local data.frame

teenagersLocalDF <- collect(teenagers)

# Print the teenagers in our dataset

print(teenagersLocalDF)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 81 / 110

Page 82: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

DataFrame from text file

path <- "test_spark.csv"

## read.text : 의 컬 로 인

USArrest.df <- read.text(sqlContext, path=path)

## write.text : DataFrame을 파일로 저장

write.text(USArrest.df, path="./text/USArrest")

## read.df : 자 인

df2 <- read.df(sqlContext, path, "csv", schema)

컬럼 타입지정

schema <- structType(structField("a", "double"),

structField("b", "double"),

structField("c", "double"),

structField("d", "string"),

structField("e", "string")

)

df2 <- read.df(sqlContext, path, "csv", schema)

showDF(df2)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 82 / 110

Page 83: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

DataFrame from text file

path <- "hdfs://localhost:54310/data/GDP.csv"

df <- read.text(sqlContext, path=path)

showDF(df)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 83 / 110

Page 84: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Basic analysis

Correltion

co <- corr(irisDF, "Sepal_Length", "Sepal_Width")

co

### [1] -0.1175698

Basic statistics for grouped Data

gDF <- groupBy(irisDF, "Species")

showDF(count(gDF))

###+----------+-----+

###| Species|count|

###+----------+-----+

###|versicolor| 50|

###| setosa| 50|

###| virginica| 50|

###+----------+-----+Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 84 / 110

Page 85: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Basic analysis

showDF(avg(gDF)) # mean/sum/count

###+----------+-----------------+------------------+------------------+------------------+

###| Species|avg(Sepal_Length)| avg(Sepal_Width)| avg(Petal_Length)| avg(Petal_Width)|

###+----------+-----------------+------------------+------------------+------------------+

###|versicolor| 5.936|2.7700000000000005| 4.26|1.3259999999999998|

###| setosa|5.005999999999999| 3.428000000000001|1.4620000000000002|0.2459999999999999|

###| virginica|6.587999999999998|2.9739999999999998| 5.552| 2.026|

###+----------+-----------------+------------------+------------------+------------------+

showDF(var(gDF))

### 에 showDF(var(gDF)) :

### 'showDF' 한 시 인 'x' 생

### 에 is.atomic(x) TRUE

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 85 / 110

Page 86: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

DataFrame 핸들링

# Show the number of rows in the SparkDataFrame

dim(irisDF)

ncol(irisDF)

nrow(irisDF)

count(irisDF)

#subset

x <- subset(irisDF, irisDF$Species == "setosa", select=1:2)

showDF(x, 20)

###+------------+-----------+

###|Sepal_Length|Sepal_Width|

###+------------+-----------+

###| 5.1| 3.5|

###| 4.9| 3.0|

### ...

###| 5.7| 3.8|

###| 5.1| 3.8|

###+------------+-----------+

###only showing top 20 rows

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 86 / 110

Page 87: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

DataFrame 핸들링

#select/filter

x <- select(irisDF, "Sepal_Length", "Sepal_Width")

showDF(x, 5)

###+------------+-----------+

###|Sepal_Length|Sepal_Width|

###+------------+-----------+

###| 5.1| 3.5|

###| 4.9| 3.0|

###| 4.7| 3.2|

###| 4.6| 3.1|

###| 5.0| 3.6|

###+------------+-----------+

###only showing top 5 rows

x<-filter(irisDF, irisDF$Species == "setosa")

showDF(x)Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 87 / 110

Page 88: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Basic analysis

agg 함수를 이용한 요약

showDF(agg(irisDF, "Sepal_Width"="stddev"))

###+-------------------+

###|stddev(Sepal_Width)|

###+-------------------+

###|0.43586628493669793|

###+-------------------+

gropuBy를 이용한 요약

v <- agg(groupBy(irisDF, "Species"), "Sepal_Width" = "variance")

m <- agg(groupBy(irisDF, "Species"), "Sepal_Width" = "mean")

result <- merge(m, v, by="Species")

#res2 <- join(m, v, m$Species == v$Species)

showDF(result)

###+----------+------------------+----------+---------------------+

###| Species_x| avg(Sepal_Width)| Species_y|variance(Sepal_Width)|

###+----------+------------------+----------+---------------------+

###| setosa| 3.428000000000001| setosa| 0.14368979591836734|

###|versicolor|2.7700000000000005|versicolor| 0.09846938775510206|

###| virginica|2.9739999999999998| virginica| 0.10400408163265307|

###+----------+------------------+----------+---------------------+

aggregate(iris$Sepal.Width, list(iris$Species), var)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 88 / 110

Page 89: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Regression analysis

# Fit a generalized linear model of family "gaussian" with spark.glm

# lasso panelty

gaussianGLM <- glm(Sepal_Length ~ Sepal_Width + Petal_Length + Petal_Width,

data=irisDF, family = "gaussian", lambda = 1)

# Model summary

summary(gaussianGLM)

###$devianceResiduals

### Min Max

### -1.133536 1.411416

###$coefficients

### Estimate Std. Error t value Pr(>|t|)

###(Intercept) 4.737644 0.2253832 21.02039 0

###Sepal_Width 0.08571792 0.06512819 1.316142 0.1901891

###Petal_Length 0.1381204 0.01761582 7.840701 8.619772e-13

###Petal_Width 0.2706206 0.04058438 6.668098 4.980358e-10

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 89 / 110

Page 90: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Regression analysis

# Prediction

gaussianPredictions <- predict(gaussianGLM, gaussianTestDF)

showDF(gaussianPredictions, 5)

###+------------+-----------+------------+-----------+-------+-------------+-----+------------------+

###|Sepal_Length|Sepal_Width|Petal_Length|Petal_Width|Species| features|label| prediction|

###+------------+-----------+------------+-----------+-------+-------------+-----+------------------+

###| 5.1| 3.5| 1.4| 0.2| setosa|[3.5,1.4,0.2]| 5.1| 5.285149659848594|

###| 4.9| 3.0| 1.4| 0.2| setosa|[3.0,1.4,0.2]| 4.9| 5.242290699266496|

###| 4.7| 3.2| 1.3| 0.2| setosa|[3.2,1.3,0.2]| 4.7| 5.245622241509266|

###| 4.6| 3.1| 1.5| 0.2| setosa|[3.1,1.5,0.2]| 4.6| 5.264674533372984|

###| 5.0| 3.6| 1.4| 0.2| setosa|[3.6,1.4,0.2]| 5.0|5.2937214519650135|

###+------------+-----------+------------+-----------+-------+-------------+-----+------------------+

###only showing top 5 rows

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 90 / 110

Page 91: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Logistic Regression analysis

# Fit a generalized linear model of family "binomial" with spark.glm

irisDF.bin <- filter(irisDF, irisDF$Species != "setosa")

binomialGLM <- glm(Species ~ .,

data=irisDF.bin, family = "binomial", lambda = 1)

# Model summary

summary(binomialGLM)

###$coefficients

### Estimate

###(Intercept) -4.2578682

###Sepal_Length 0.1882016

###Sepal_Width 0.1761909

###Petal_Length 0.3033373

###Petal_Width 0.6480999Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 91 / 110

Page 92: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

아파치 스파크 sparkR 예제

Logistic Regression analysis

# predicted, DataFrame object

predicted <- predict(binomialGLM, newData=irisDF.bin)

showDF(predicted[, 7:10])

###+-----+--------------------+--------------------+----------+

###|label| rawPrediction| probability|prediction|

###+-----+--------------------+--------------------+----------+

###| 0.0|[0.04362088018663...|[0.51090349118832...| 0.0|

###| 0.0|[0.15239932699768...|[0.53802626180391...| 0.0|

###| 0.0|[-0.0454173163662...|[0.48864762225135...| 1.0|

###| 0.0|[0.76164120267576...|[0.68170995054938...| 0.0|

###| 0.0|[0.17372178113377...|[0.54332154903075...| 0.0|

###| 0.0|[0.48423680592403...|[0.61874783444119...| 0.0|

###+-----+--------------------+--------------------+----------+

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 92 / 110

Page 93: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O

5. H2O

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 93 / 110

Page 94: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

5.1 H2O 소개

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 94 / 110

Page 95: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O

빅데이터 고급분석을 위한 인메모리 기반의 오픈소스 엔진

벤처기업 (H2O.ai)에서 개발된 Java기반 오픈소스 인메모리 기계학습 플랫폼

Spark의 MLLib에서 제공하지 못하는 다양한 기계학습/딥러닝 알고리즘 지원

* Spark의 R API인 sparkR은 MLLib에서 제공하는 모든 기계학습/딥러닝알고리즘 구현 안됨

웹 인터페이스 (H2O Flow)를 제공

R, Java, Python, Scala등 다양한 API 제공

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 95 / 110

Page 96: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O의 구성

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 96 / 110

Page 97: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O의 구성

H2O 클라우드는 하나 이상의 노드 (자바가상머신,JVM)들로 구성

각 노드는 언어 레이어, 알고리즘 레이어, 코어 레이어로 구성

언어 레이어: R, Scala 등 언어를 이용한 H2O 모델 개발을 지원

알고리즘 레이어: 데이터 파싱과 다양한 기계학습 알고리즘 제공

코어 계층:

- 실시간 인메모리 처리- 작은 단위의 데이터 분산을 지원하는 분산 Key/Value 저장소- 압축저장을 제공하는 Fluid vector frame을 메모리 관리 (??)- MapReduce Task 관리, Fork/Join 관리, CPU 관리

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 97 / 110

Page 98: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O for R의 설치 및 구동

Use H2O directly from R이미 로드되었거나 이전 설치된 H2O package를 언로드 / 삭제

if ("package:h2o" %in% search()) {

detach("package:h2o", unload=TRUE)

}

if ("h2o" %in% rownames(installed.packages())) {

remove.packages("h2o")

}

H2O와 의존관계가 있는 패키지 설치

dep_pack <- c("methods", "statmod", "stats",

"graphics", "RCurl", "rjson", "tools", "utils")

not_installed <- dep_pack[!(dep_packages

%in% rownames(installed.packages()))]

if(length(not_installed_packages)>=1)

install.packages(not_installed)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 98 / 110

Page 99: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O의 설치 및 구동

h2o패키지 다운로드 및 설치

repos<-"http://h2o-release.s3.amazonaws.com/

h2o-dev/master/1109/R"

install.packages("h2o", type="source", repos=repos)

h2o 시작

library(h2o)

localH2O = h2o.init()

데모 프로그램 시작

demo(h2o.kmeans)

클러스터 정보조회 및 종료

h2o.clusterInfo()

h2o.shutdown(prompt = FALSE)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O - 2016. 08. 12 99 / 110

Page 100: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O flow: Web API for H2O

h2o.init()실행 이후 http://localhost:54321/로 접근

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 100 / 110

Page 101: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O H2O 소개

H2O의 함수

native R H2Oread.csv, h2o.importFile

read.table, etc h2o.importFoldersummary summary (limited to data only)

glm, glmnet h2o.glm(y, x, data, family, nfolds, alpha, lambda)

kmeans h2o.kmeans(data, centers, cols, iter.max)

randomForest, h2o.randomForestcforest (y, x_ignore, data, ntree, depth, classwt)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 101 / 110

Page 102: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

5.2 Examples for H2O

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 102 / 110

Page 103: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

H2O 시작

h2o.init()

###H2O is not running yet, starting it now...

###

###Note: In case of errors look at the following log files:

### C:\Users\user1\AppData\Local\Temp\Rtmpw3PSfN/h2o_user1_started_from_r.out

### C:\Users\user1\AppData\Local\Temp\Rtmpw3PSfN/h2o_user1_started_from_r.err

###

###java version "1.7.0_79"

###Java(TM) SE Runtime Environment (build 1.7.0_79-b15)

###Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

###

###Starting H2O JVM and connecting: . Connection successful!

###

###R is connected to the H2O cluster:

### H2O cluster uptime: 3 seconds 413 milliseconds

### H2O cluster version: 3.8.2.6

###...

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 103 / 110

Page 104: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

H2O데이터프레임(H2OFrame) 생성

1. R 데이터프레임 → H2OFrame 생성

iris.hex <- as.h2o(iris)

### |===============================================================================| 100%

2. 로컬 csv 파일

irisPath = "/home/hduser/testR/iris.csv"

iris.hex = h2o.importFile(path = irisPath, destination_frame = "iris_local.hex", sep=",")

summary(iris.hex) # summary.H2OFrame

Import an entire folder of files

pathToFolder = "/home/hduser/testR/GDP/"

GDP = h2o.importFolder(path = pathToFolder, destination_frame = "GDP")

summary(GDP)Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 104 / 110

Page 105: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

H2O데이터프레임(H2OFrame) 생성

3. From HDFS

pathToData = "hdfs://localhost:54310/data/GDP.csv"

GDP.hex = h2o.importFolder(path = pathToData)

head(GDP.hex)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 105 / 110

Page 106: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

ML Algorithms

GLM + elastic net

prostate.glm = h2o.glm(x = c("AGE","RACE","PSA","DCAPS"), y = "CAPSULE", training_frame = prostate.hex, family = "binomial",

Naive Bayes

h2o.naiveBayes(x, y, training_frame, ...)

k-means clustering

h2o.kmeans(training_frame, x, k, ...)

Random Forest

h2o.randomForest(x, y, training_frame, ...)

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 106 / 110

Page 107: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

딥러닝

iris.dl <- h2o.deeplearning(x = 1:4, y = 5, training_frame = iris.hex)

### |===============================================================================| 100%

iris.dl

###Model Details:

###==============

###

###H2OMultinomialModel: deeplearning

###Model ID: DeepLearning_model_R_1466269195483_1

###Status of Neuron Layers: predicting Species, 3-class classification, multinomial distribution, CrossEntrop###y loss, 41,803 weights/biases, 498.1 KB, 1,500 training samples, mini-batch size 1

### layer units type dropout l1 l2 mean_rate rate_RMS momentum mean_weight weight_RMS

###1 1 4 Input 0.00 %

###2 2 200 Rectifier 0.00 % 0.000000 0.000000 0.004215 0.003371 0.000000 -0.009084 0.104312

###3 3 200 Rectifier 0.00 % 0.000000 0.000000 0.018880 0.087681 0.000000 -0.000900 0.070017

###4 4 3 Softmax 0.000000 0.000000 0.018586 0.113623 0.000000 0.018094 0.401119

### mean_bias bias_RMS

###1

###2 0.488136 0.011524

###3 0.998884 0.003129

###4 -0.003532 0.004522

###H2OMultinomialMetrics: deeplearning

###** Reported on training data. **

###Description: Metrics reported on full training frame

###

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 107 / 110

Page 108: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

H2O Examples for H2O

딥러닝-conti

###Training Set Metrics:

###=====================

###Metrics reported on full training frame

###Extract training frame with `h2o.getFrame("iris")`

###MSE: (Extract with `h2o.mse`) 0.06926246

###R^2: (Extract with `h2o.r2`) 0.8961063

###Logloss: (Extract with `h2o.logloss`) 0.262829

###Confusion Matrix: Extract with `h2o.confusionMatrix(<model>,train = TRUE)`)

###=========================================================================

###Confusion Matrix: vertical: actual; across: predicted

### setosa versicolor virginica Error Rate

###setosa 50 0 0 0.0000 = 0 / 50

###versicolor 0 50 0 0.0000 = 0 / 50

###virginica 0 12 38 0.2400 = 12 / 50

###Totals 50 62 38 0.0800 = 12 / 150

...

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 108 / 110

Page 109: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

References

6. References

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 109 / 110

Page 110: 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2Odatamining.dongguk.ac.kr/lectures/2016-2/bigdata/R_for_bigdata-2.pdf · Contents 1. R을이용한고성능컴퓨팅 2

..........

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

.....

.....

......

.....

......

.....

.....

.

References

References

...1 Holmes (2014). Hadoop in Practice, Manning Publications.

...2 McCallum & Weston (2012). Parallel R, O’REILLY.

...3 Prajapati (2013). Big Data Analytics with R and Hadoop, PACKT.

...4 White (2011). Hadoop: The Definitive Guide, O’REILLY.

...5 http://www.h2o.ai/

...6 Zaharia et al. (2012). Resilient distributed datasets: A fault-tolerant abstraction forin-memory cluster computing.

Jinseog Kim (Dongguk Univ.) 빅데이터 분석을 위한 R의 활용 - Hadoop/Spark/H2O -2016. 08. 12 110 / 110