What is spark

24
what is spark

Transcript of What is spark

Page 1: What is spark

what is spark

Page 2: What is spark

빅데이터분석의시초

GFS(Google File System) 논문(2003)

여러컴퓨터를연결하여저장용량과 I/O성능을 Scale

이를구현한오픈소스프로젝트 : Hadooop HDFS

MapReduce 논문(2003)

Map과 Reduce연산을조합하여클러스터에서실행, 큰데이터를처리

이를구현한오픈소스프로젝트 : Hadoop MapReduce

Page 3: What is spark

Hadoop

Page 4: What is spark

Hadoop 2

Page 5: What is spark

빅데이터분석의시초(2)

Hive

MapReduce 코드를짜는건괴롭다.

쿼리로 MapReduce의거의모든기능을표현

HDFS등에있는파일을읽어들여쿼리로분석수행

HiveQL을작성하면 MapReduce 코드로변환되어실행

Page 6: What is spark

MapReduce/Hive 장단점

장점

빅데이터시대를열어준선구적인기술

거대한데이터를안정적으로처리

많은사람들이사용중

단점

오래된기술.

발전이느림

불편한점이많음

Page 7: What is spark

MapReduce의문제점

MapReduce는 Map의입출력및 Reduce의입출력은매번 HDFS에쓰고읽는다.

→ 느리다.

MapReduce 코드는작성하기불편하다.

→ 좀더좋은인터페이스가필요

Page 8: What is spark

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

Page 9: What is spark

Spark

SPARK = RDD + Interface

why RDD need?

MapReduce의약점

더복잡하고, multi-stage한처리

interactive하고 ad-hoc한쿼리

위와같은부분을해결하고자함

Page 10: What is spark

하드에쓰는것보단, 메모리에쓰면빠르겠다.

Page 11: What is spark

쿼리를할때마다하드에서읽어오지않고, 램에올려놓고그다음에쿼리를날리면빠름.

Page 12: What is spark

RAM

RAM : Random Access Memory

Read/Write가자유로움

→Read Only로제한

→ 데이타변환은어떻게?

Page 13: What is spark

스파크데이타변환

Page 14: What is spark

RDD

Read only Memory +

DAG(데이타변환계보) +

Lazy Execution

→ fault-tolerant & efficient 한 RAM 저장소생성

Page 15: What is spark

SPARK 확장

지원언어: scala, java, python,R

SLQ 연동 : Spark SQL

기계학습 : MLlib, GraphX

Page 16: What is spark

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 )

Page 17: What is spark

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” 추가

Page 18: What is spark

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

위의모든항목을노드내의모든컴퓨터에동일하게설정.

Page 19: What is spark

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

Page 20: What is spark

SPARK cluster mode

실행: {$SPARK_HOME}/bin/start.sh

web console : http://SPARK_MASTER:8080

Page 21: What is spark

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/ 접속

Page 22: What is spark

scala ipython for SPARK

ipython에서 python으로 spark 쓰면좋은데…

ipython에서 scala로 spark이용가능할까?

→ https://github.com/tribbloid/ISpark

설정방법

ipython에 kernel을추가.

.ipython/kernels/ispark 디렉토리를추가,

우측그림과같이설정

Page 23: What is spark

Zeppeline!

https://zeppelin.incubator.apache.org/

SPARK를지원, 시각화/개발도구.

설치방법

http://www.slideshare.net/sangwookimme/zeppelinspark-

41329473

Page 24: What is spark

개발팁

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”