R은 데이터 분석 분야에서 널리 사용되고 있는 무료 도구입니다. 뛰어난 기능과 확장성 등으로 인해 다양한 분야에서 널리 활용되고 있지만 대용량 데이터를 직접 다루는 데 한계가 있다는 약점이 있었습니다. 스파크는 클러스터 환경에서 동작하는 대용량 분산 데이터 처리 시스템입니다. 뛰어난 성능과 더불어 다양하고 유용한 데이터 처리 함수를 제공하며 R, 하둡, Hive 등 기존 데이터 분석 도구등과 연동하여 사용할 수 있는 다양한 기능을 제공합니다.
이 문서에서는 R과 스파크를 연동하는 방법과 함께 R 스크립트에서 R과 스파크 함수를 함께 사용하는 방법을 소개합니다. 또한 웹 브라우저 기반의 작업 환경을 제공하는 제플린과의 연동을 통해 다수의 사용자가 시간과 공간의 제약 없이 자유롭게 서버에 접속하여 데이터를 분석하고 그 결과를 공유할 수 있는 방법에 대해서도 소개합니다. 스파크와 R, 제플린을 적절히 조합하여 사용한다면 다른 유료 분석 툴 부럽지 않은 분석 환경을 구축할 수 있을 것입니다.
3. 을 활용한
데이터 분석
R
■ 의학, 제조, 교육, 금융 등
다양한 산업 분야에서 사용
■ 머신러닝, 데이터 마이닝,
데이터 시각화를 위한
그래프 처리 분야 등에서 널리 사용
■ 무료 소프트웨어이지만
오랜 기간 사용되면서
그 기능과 안정성을 충분히 검증
■ 패키지 기반의 확장성을 제공
R데이터 마이닝
제조
머신러닝
의학
통계 분석
교육
오픈소스
History
Graphics
금융
5. 을 활용한
데이터 분석
R
?
하지만, R에도 약점은 있으니...
■ 대용량 데이터 처리에 취약하다
■ R 병렬 처리 패키지만으로는
아무래도 부족한…
R ** TB
6. 을 활용한
데이터 분석
R + Hadoop
?
■ 하둡을 사용해 보자!
■ 대용량 데이터를 HDFS와 같은 분산 저장소에 올려놓고
■ 그 결과로 생성된 파일을 가지고 R을 이용한 데이터 분석을 수행
■ 하둡의 맵리듀스를 비롯한 다양한 빅데이터 처리 도구를
이용하여 대용량 데이터에 대한 전 처리를 수행한 뒤
R ** TB
HDFS
Files
Files
Files
Files
MapReduce
+
Hive, Pig, HBase …
7. + Spark
?
■ 그런데 뭐가 달라졌지?
■ 이번엔 스파크(스파크R)를 활용해 보자!
R ** TB
HDFS
Files
Files
Files
Files
Spark
을 활용한
데이터 분석
R
8. + Spark을 활용한
데이터 분석
R
R+
SparkR
package
** TB
HDFS
스파크R을 사용하게 되면
■ 대용량 데이터 처리 결과를 “파일”로
만들고 그 “파일”을 다시 R로 분석하는
단계를 거칠 필요가 없다.
■ R 스크립트로 스파크에 직접 연동한다!
9. R+
SparkR
package
** TB
HDFS
R에서 직접 스파크 클러스터에 작업을 제출하고 … 그 결과를 R 데이터프레임 형태로 직접 전달받는다!
+ Spark을 활용한
데이터 분석
스파크 클러스터
R
Server
Server
Server
Server
Server
Server
Server
10. ■ 클러스터 기반 대용량 분산 데이터 처리
■ 다양한 기능 제공
머신러닝
RDD
분산 데이터 처리
분산SQL
Dataset
DataFrame
Graph 알고리즘
스파크R
Text, JSon, Parquet...
Spark Streaming
Spark
Spark
?
11. Ex) SparkR 쉘에서 실행한 경우!
1. Java 설치
2. Spark 설치
3. R 설치
4. SparkR 패키지 로드
5. 스파크R(Spark + R)을 이용한
데이터 처리
Spark + R(쉘에서 작업)
12. Ex) RStudio에서 실행한 경우!
Spark + R(RStudio에서 작업)
1. Java 설치
2. Spark 설치
3. R 설치
4. Rstudio 설치
5. SparkR 패키지 로드
6. 스파크R(Spark + R)을
이용한 데이터 처리
13. https://zeppelin.apache.org/
Zeppelin(웹 브라우저로 작업)
1. 데이터 분석을 위한 웹 노트(코드 에디터) 제공
2. NF랩스(한국)에서 개발되어 아파치 톱 레벨 프로젝트 등극
3. 인터프리터(Interpreter)를 통해 스파크, Hbase, 쉘, R, 카산드라,
하이브등 다양한 외부 시스템 및 라이브러리 연동
4. 결과 데이터에 대한 시각화 기능 제공
5. Dynamic Form 생성 기능 제공
14. Zeppelin 설치(빌드)
1. 제플린 빌드
■ 스파크 최신 버전(2.1.0)을 사용하기 위해 제플린 SNAPSHOT 버전(0.7.0) 빌드 필요
■ 노드(Node.js), 자바, 스칼라(2.11), 메이븐 등 빌드를 위한 사전 라이브러리 설치(https://goo.
gl/WSsHj8, Build requirements 참조)
■ 제플린 코드 Clone
■ git clone https://github.com/apache/zeppelin.git
■ 빌드
■ ./dev/change_scala_version.sh 2.11
■ mvn clean package -Pbuild-distr -DskipTests -Pspark-2.1 -Phadoop-2.6
-Ppyspark -Psparkr -Pscala-2.11
15. Zeppelin 설치(빌드)
1. 빌드가 끝난 후
2. zeppelin-distribution/target/
zeppelin-0.8.0-SNAPSHOT.
tar.gz 생성 됨
3. 위 파일 압축을 원하는 위치로
이동 후 압축 해제
(ex: ~/Apps/ zeppelin-0.8.0-SNAPSHOT)
16. 1. 자바 설치 (Java7+ 사용 가능 하지만 Java8 권장)
2. 자바 설치 후 JAVA_HOME 환경 변수 설정
3. 스칼라 설치 (2.11.x 버전)
4. (파이썬을 사용할 경우) 파이썬 설치 (2.6+ 또는 3.4+ 사용 가능 하지만 3.4+ 권장)
5. (하둡 파일 시스템을 사용할 경우) 하둡 설치 (Hadoop 2.7+ 권장)
6. 스파크 설치
■ 스파크 다운로드 : https://goo.gl/b6Lb1w (2.1.0 버전, 사용할 하둡 버전에 맞춰 다운로드)
■ 다운로드 된 파일을 압축 해제 후 압축 해제 한 위치를 SPARK_HOME 으로 설정
■ 스파크 클러스터 설정(https://goo.gl/FOlth1)
Spark 설치
17. 1. 스파크 설치 확인
■ ${SPARK_HOME}/bin/spark-shell 실행
■ 프롬프트가 나오면 아래 코드 입력(아래 예제에서 spark_home은 스파크가 설치 경로를 의미)
scala sc.textFile(file:///spark_home/README.md).flatMap(_.split( )).countByValue
(결과) scala.collection.Map[String,Long] = Map(site, - 1, Please - 4, GraphX - 1…
■ 정상적으로 설치되면 위와 같은 결과가 콘솔에 출력 됨.
Spark 설치
18. 1. R 설치
■ https://www.r-project.org
■ OS에 맞게 설치
■ R 설치 후 R 그래픽 패키지 설치
■ install.packages('devtools', repos = 'http://cran.us.r-project.org')
■ install.packages('knitr', repos = 'http://cran.us.r-project.org')install.
packages('ggplot2', repos = 'http://cran.us.r-project.org')
■ install.packages(c('devtools','mplot', 'googleVis'), repos = 'http://cran.us.r-project.
org'); require(devtools); install_github('ramnathv/rCharts')
R 설치
19. 1. SPARK_HOME 설정
2. zeppelin-site.xml 생성(파일만 생성해 두면 됨)
■ zeppelin_home/conf/zeppelin-env.sh(최초에 zeppelin-env.sh.template 파일을 복사하여
생성)
■export SPARK_HOME=${SPARK_HOME}
■export SPARK_APP_NAME=Zeppelin-Spark
■ cd zeppelin_home/conf
■ cp zeppelin-site.xml.template zeppelin-site.xml
Zeppelin 설정
20. Zeppelin 구동
1. 제플린 데몬 구동
2. 서버 실행 후
브라우저를 통해
http://서버IP:8080
으로 접속
■ zeppelin_home/bin/zeppelin-daemon.sh start ( start 대신 “stop” 이나 “restart” 가능)
22. Zeppelin 노트 실행
1. 노트에 println(Hello, World!!) 라고 입력 후 실행 (실행은 READY 문자옆의
화살표 모양 아이콘)
■ 간단한 예제 실행을 통해…
■내부적으로 스파크 잡 실행 + 스파크 세션 및 스파크 실행 환경 구성
실행결과
코드 실행버튼