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”

What is spark

  • 1.
  • 2.
    빅데이터 분석의 시초 GFS(GoogleFile System) 논문(2003) 여러 컴퓨터를 연결하여 저장용량과 I/O성능을 Scale 이를 구현한 오픈소스 프로젝트 : Hadooop HDFS MapReduce 논문(2003) Map과 Reduce연산을 조합하여 클러스터에서 실행, 큰 데이터를 처리 이를 구현한 오픈소스 프로젝트 : Hadoop MapReduce
  • 3.
  • 4.
  • 5.
    빅데이터 분석의 시초(2) Hive MapReduce코드를 짜는 건 괴롭다. 쿼리로 MapReduce의 거의 모든 기능을 표현 HDFS등에 있는 파일을 읽어들여 쿼리로 분석 수행 HiveQL을 작성하면 MapReduce 코드로 변환되어 실행
  • 6.
    MapReduce/Hive 장단점 장점 빅데이터 시대를열어준 선구적인 기술 거대한 데이터를 안정적으로 처리 많은 사람들이 사용중 단점 오래된 기술. 발전이 느림 불편한 점이 많음
  • 7.
    MapReduce의 문제점 MapReduce는 Map의입출력 및 Reduce의 입출력은 매번 HDFS에 쓰고 읽는다. → 느리다. MapReduce 코드는 작성하기 불편하다. → 좀더 좋은 인터페이스가 필요
  • 8.
    Spark Apache Spark isa 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
  • 9.
    Spark SPARK = RDD+ Interface why RDD need? MapReduce의 약점 더 복잡하고, multi-stage한 처리 interactive하고 ad-hoc한 쿼리 위와 같은 부분을 해결하고자 함
  • 10.
    하드에 쓰는것 보단,메모리에 쓰면 빠르겠다.
  • 11.
    쿼리를 할때 마다하드에서 읽어 오지 않고, 램에 올려 놓고 그 다음에 쿼리를 날리면 빠름.
  • 12.
    RAM RAM : RandomAccess Memory Read/Write가 자유로움 →Read Only로 제한 → 데이타 변환은 어떻게?
  • 13.
  • 14.
    RDD Read only Memory+ DAG(데이타 변환 계보) + Lazy Execution → fault-tolerant & efficient 한 RAM 저장소 생성
  • 15.
    SPARK 확장 지원언어: scala,java, python,R SLQ 연동 : Spark SQL 기계학습 : MLlib, GraphX
  • 16.
    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 )
  • 17.
    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” 추가
  • 18.
    Spark 설치3 cluster 모드 sshkey 배포 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 위의 모든 항목을 노드내의 모든 컴퓨터에 동일하게 설정.
  • 19.
    SPARK 실행 환경변수 설정 exportSPARK_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
  • 20.
    SPARK cluster mode 실행:{$SPARK_HOME}/bin/start.sh web console : http://SPARK_MASTER:8080
  • 21.
    ipython for Spark ipythonnotebook에서 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/ 접속
  • 22.
    scala ipython forSPARK ipython에서 python으로 spark 쓰면 좋은데… ipython에서 scala로 spark이용 가능할까? → https://github.com/tribbloid/ISpark 설정 방법 ipython에 kernel을 추가. .ipython/kernels/ispark 디렉토리를 추가, 우측 그림과 같이 설정
  • 23.
    Zeppeline! https://zeppelin.incubator.apache.org/ SPARK를 지원, 시각화/개발도구. 설치 방법 http://www.slideshare.net/sangwookimme/zeppelinspark- 41329473
  • 24.
    개발 팁 spark restjob 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”