R은 데이터 분석 분야에서 널리 사용되고 있는 무료 도구입니다. 뛰어난 기능과 확장성 등으로 인해 다양한 분야에서 널리 활용되고 있지만 대용량 데이터를 직접 다루는 데 한계가 있다는 약점이 있었습니다. 스파크는 클러스터 환경에서 동작하는 대용량 분산 데이터 처리 시스템입니다. 뛰어난 성능과 더불어 다양하고 유용한 데이터 처리 함수를 제공하며 R, 하둡, Hive 등 기존 데이터 분석 도구등과 연동하여 사용할 수 있는 다양한 기능을 제공합니다.
이 문서에서는 R과 스파크를 연동하는 방법과 함께 R 스크립트에서 R과 스파크 함수를 함께 사용하는 방법을 소개합니다. 또한 웹 브라우저 기반의 작업 환경을 제공하는 제플린과의 연동을 통해 다수의 사용자가 시간과 공간의 제약 없이 자유롭게 서버에 접속하여 데이터를 분석하고 그 결과를 공유할 수 있는 방법에 대해서도 소개합니다. 스파크와 R, 제플린을 적절히 조합하여 사용한다면 다른 유료 분석 툴 부럽지 않은 분석 환경을 구축할 수 있을 것입니다.
Spark machine learning & deep learninghoondong kim
Spark Machine Learning and Deep Learning Deep Dive.
Scenarios that use Spark hybrid with other data analytics tools (MS R on Spark, Tensorflow(keras) with Spark, Scikit-learn with Spark, etc)
빅데이터 개념 부터 시작해서 빅데이터 분석 플랫폼의 출현(hadoop)과 스파크의 등장배경까지 풀어서 작성된 spark 소개 자료 입니다.
스파크는 RDD에 대한 개념과 spark SQL 라이브러리에 대한 자료가 조금 자세히 설명 되어있습니다. (텅스텐엔진, 카탈리스트 옵티마이져에 대한 간략한 설명이 있습니다.)
마지막에는 간단한 설치 및 interactive 분석 실습자료가 포함되어 있습니다.
원본 ppt 를 공개해 두었으니 언제 어디서든 필요에 따라 변형하여 사용하시되 출처만 잘 남겨주시면 감사드리겠습니다.
다른 슬라이드나, 블로그에서 사용된 그림과 참고한 자료들은 작게 출처를 표시해두었는데, 본 ppt의 초기버전을 작성하면서 찾았던 일부 자료들은 출처가 불분명한 상태입니다. 자료 출처를 알려주시면 반영하여 수정해 두도록하겠습니다. (제보 부탁드립니다!)
spark 1.6을 기준으로 spark sql에 대해서 개략적으로 설명한 자료입니다. 발표 자료가 친절하지 않으나 한글로 된 자료가 없길래 혹시나 도움 되시는 분들이 있을까 하여 공유합니다.
발표자료 보다는 마지막 페이지의 참고자료들을 읽어보시기를 권장 드립니다.
출처만 남겨주시면 자유롭게 가져가셔서 사용하셔도 무방합니다.
Spark machine learning & deep learninghoondong kim
Spark Machine Learning and Deep Learning Deep Dive.
Scenarios that use Spark hybrid with other data analytics tools (MS R on Spark, Tensorflow(keras) with Spark, Scikit-learn with Spark, etc)
빅데이터 개념 부터 시작해서 빅데이터 분석 플랫폼의 출현(hadoop)과 스파크의 등장배경까지 풀어서 작성된 spark 소개 자료 입니다.
스파크는 RDD에 대한 개념과 spark SQL 라이브러리에 대한 자료가 조금 자세히 설명 되어있습니다. (텅스텐엔진, 카탈리스트 옵티마이져에 대한 간략한 설명이 있습니다.)
마지막에는 간단한 설치 및 interactive 분석 실습자료가 포함되어 있습니다.
원본 ppt 를 공개해 두었으니 언제 어디서든 필요에 따라 변형하여 사용하시되 출처만 잘 남겨주시면 감사드리겠습니다.
다른 슬라이드나, 블로그에서 사용된 그림과 참고한 자료들은 작게 출처를 표시해두었는데, 본 ppt의 초기버전을 작성하면서 찾았던 일부 자료들은 출처가 불분명한 상태입니다. 자료 출처를 알려주시면 반영하여 수정해 두도록하겠습니다. (제보 부탁드립니다!)
spark 1.6을 기준으로 spark sql에 대해서 개략적으로 설명한 자료입니다. 발표 자료가 친절하지 않으나 한글로 된 자료가 없길래 혹시나 도움 되시는 분들이 있을까 하여 공유합니다.
발표자료 보다는 마지막 페이지의 참고자료들을 읽어보시기를 권장 드립니다.
출처만 남겨주시면 자유롭게 가져가셔서 사용하셔도 무방합니다.
I will make this presentation for seminar of NIPA
For more information of the seminar, please go to http://www.software.kr/user/seminar.mbs?id=swkr_050102000000&command=view&idx=376830
빅데이터 기술의 소프트웨어 공학 적용
1. 빅데이터 기술의 활용 사례 - 빅데이터 기술은 이미 많은 적용 사례를 가지고 있고, IoT 기술과 더불어 일상의 기술이 되어 가고 있다 (Pervasive & Invisible Analytics).
2. Spark 플랫폼 - 이전에 Hadoop으로 대표되는 빅데이터의 분산 처리 기술은 계속 발전하고 있고, Spark는 메모리 기반 데이터 처리로 기존 대비 성능을 10~100배 개선하였다. 특히, Spark는 Scala라는 함수형 언어로 구현되었고, 이전에 Java 기반의 빅데이터 처리 코드를 보다 명료하고 Compact하게 구현할 수 있다. 데이터 분석에는 Imperative 언어보다 함수형 언어가 보다 적합하다.
3. 소프트웨어 공학에서의 데이터 분석 사례 - 최근 Software Analytics, Repository Mining 등 데이터 분석 사례들이 있고, 최근 GitHub 이나 StackOverflow 분석과 같은 빅데이터 분석 연구들이 진행되고 있다.
4. Spark를 활용한 Word Count 예
5. Big Data Software Engineering - 큰 데이터 처리 외에도, 실시간 데이터 처리 (Velocity), 다양한 데이터 처리 (Variety) 부분에도 소프트웨어 공학 적용이 필요하다. 또한, Big Data Software를 Engineering하는 부분에도 관심이 필요하다. Big Data 분석 코드 역시 SE의 대상으로 바라보고, Test Driven Dev, Agile Methodology와 같은 개발 방법의 적용을 살펴볼 필요가 있다.
마지막으로, 현재 빅데이터 기술에 대한 진입 장벽은 많이 낮아졌고, 사용 가능한 오픈소스들이 많다. 소프트웨어 공학자라면 빅데이터 분석을 직접 시도해 볼 필요가 있고, 특히, Spark-Scala는 향 후 더욱 발전 확대될 기술이다.
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 문자옆의
화살표 모양 아이콘)
■ 간단한 예제 실행을 통해…
■내부적으로 스파크 잡 실행 + 스파크 세션 및 스파크 실행 환경 구성
실행결과
코드 실행버튼