What is spark
-
Upload
jaeho-kang -
Category
Technology
-
view
157 -
download
0
Transcript of What is spark
what is spark
빅데이터분석의시초
GFS(Google File System) 논문(2003)
여러컴퓨터를연결하여저장용량과 I/O성능을 Scale
이를구현한오픈소스프로젝트 : Hadooop HDFS
MapReduce 논문(2003)
Map과 Reduce연산을조합하여클러스터에서실행, 큰데이터를처리
이를구현한오픈소스프로젝트 : Hadoop MapReduce
Hadoop
Hadoop 2
빅데이터분석의시초(2)
Hive
MapReduce 코드를짜는건괴롭다.
쿼리로 MapReduce의거의모든기능을표현
HDFS등에있는파일을읽어들여쿼리로분석수행
HiveQL을작성하면 MapReduce 코드로변환되어실행
MapReduce/Hive 장단점
장점
빅데이터시대를열어준선구적인기술
거대한데이터를안정적으로처리
많은사람들이사용중
단점
오래된기술.
발전이느림
불편한점이많음
MapReduce의문제점
MapReduce는 Map의입출력및 Reduce의입출력은매번 HDFS에쓰고읽는다.
→ 느리다.
MapReduce 코드는작성하기불편하다.
→ 좀더좋은인터페이스가필요
Spark
Apache Spark is a powerful open source processing engine buit around speed,
ease of use, and sophisticated analytics.
keywords
open source
processing engine
speed
ease of use
sophisticated analytics
Spark
SPARK = RDD + Interface
why RDD need?
MapReduce의약점
더복잡하고, multi-stage한처리
interactive하고 ad-hoc한쿼리
위와같은부분을해결하고자함
하드에쓰는것보단, 메모리에쓰면빠르겠다.
쿼리를할때마다하드에서읽어오지않고, 램에올려놓고그다음에쿼리를날리면빠름.
RAM
RAM : Random Access Memory
Read/Write가자유로움
→Read Only로제한
→ 데이타변환은어떻게?
스파크데이타변환
RDD
Read only Memory +
DAG(데이타변환계보) +
Lazy Execution
→ fault-tolerant & efficient 한 RAM 저장소생성
SPARK 확장
지원언어: scala, java, python,R
SLQ 연동 : Spark SQL
기계학습 : MLlib, GraphX
Spark 설치
다운로드 : http://spark.apache.org/
설치
윈도우 :http://hopers.tistory.com/entry/%EC%8A%A4%ED%8C%8C%ED%81%AC-
%EC%84%A4%EC%B9%98-on-windows
azure : https://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-apache-spark-zeppelin-notebook-
jupyter-spark-sql/
linux : http://gorakgarak.tistory.com/374
mac : not support. ( oracle java 1.8 jni issue )
Spark 설치 2
단순하게…
java 설치(없다면, 설치후 java_home 셋팅필요)
stand alone mode
spark 배포판다운로드(hadoop라이브러리가있다면하두없는버젼)
압축풀고, 해당경로의 conf로이동.
spark-env.sh.template 복사 spark-env.sh
spark-env.sh 수정
“SPARK_MASTER_IP=localhost” 추가
Spark 설치3
cluster 모드
ssh key 배포
ssh-keygen 실행
master 컴퓨터의 ~/.ssh/id_rsa.pub 파일을각각의클라이언트컴퓨터의 ~/.ssh/authorized_keys에추가.
spark 압축해제폴더에서 conf로이동
클라이언트설정 : slaves.template 복사 slaves, 노드를구성하는모든컴퓨터의 ip입력.
spark-env.sh.template 복사 spark-env.sh 다음사항설정
SPARK_MASTER_IP = master IP
SPARK_MASTER_PORT = 7077
위의모든항목을노드내의모든컴퓨터에동일하게설정.
SPARK 실행
환경변수설정
export SPARK_HOME={$SPARK_HOME}
cluster 모드
실행
{$SPARK_HOME}/sbin/start-all.sh
중지
{$SPARK_HOME}/sbin/stop-all.sh
scala console 실행
{$SPARK_HOME}/bin/spark-shell.sh
python console 실행
{$SPARK_HOME}/bin/pysaprk
R console 실행
{$SPARK_HOME}/bin/sparkR
SPARK cluster mode
실행: {$SPARK_HOME}/bin/start.sh
web console : http://SPARK_MASTER:8080
ipython for Spark
ipython notebook에서 python spark를이용해보자.
1. 환경설정
python 설치.(anaconda 같은통합패키지가정신건강
에좋음^^)
2. 환경변수설정
export IPYTHON_OPTS=”notebook --notebook-
dir=<notebook dir>”
export PYSPARK_PYTHON=”<python
binpath>/python”
export PYSPARK_SUBMIT_ARGS=”--master
spark://SPARK_MASTER_IP:PORT pyspark-shell”
3. 실행
${SPARK_HOME}/bin/pyspark
http://SPARK_MASTER_IP:8888/ 접속
scala ipython for SPARK
ipython에서 python으로 spark 쓰면좋은데…
ipython에서 scala로 spark이용가능할까?
→ https://github.com/tribbloid/ISpark
설정방법
ipython에 kernel을추가.
.ipython/kernels/ispark 디렉토리를추가,
우측그림과같이설정
Zeppeline!
https://zeppelin.incubator.apache.org/
SPARK를지원, 시각화/개발도구.
설치방법
http://www.slideshare.net/sangwookimme/zeppelinspark-
41329473
개발팁
spark rest job client
https://github.com/ywilkof/spark-jobs-rest-client
SPARK 서버는내부적으로 REST Server를내장.
이 REST Server을통해 spark 동작시킴.
주요설정
외부 jar 사용하기(주로 jdbc)
driver 실행시추가 : -Dspark.driver.extraClassPath = “jar 경로”
executor 실행시추가 : -Dspark.executor.extraClassPath=”jar 경로"
core제한
-Dspark.cores.max=”max” -1 이설정이없을경우클라우드모드에서가용한모든코어를투입
메모리크기설정
-Dspark.executor.memory=”memory size”