본문 바로가기

개발일기/DataBase

Spark 기초

https://gritmind.blog/2020/08/23/spark_start/

 

스파크(Spark) 시작하기

최근 빅데이터 플랫폼에서 인메모리 방식의 Spark의 활용도가 점점 높아지고 있습니다. Spark은 분산 환경에서 동작하기 때문에 일반 프로그래밍과 다른 측면이 있습니다. Spark을 사용하기에 앞서

gritmind.blog

위 링크 참조하여 내가 필요한 부분만 정리

 

 

Spark란?

  • 분산 데이터처리 시스템
  • 분산 환경에서 동작
  • 인메모리 방식

 

Spark 시작하기

Spark 프로그래밍 언어

  • 스칼라로 작성되고 JVM(Java Virtual Machine)으로 돌아감
  • 다양한 언어로 작성 가능(Scala, Java, Python, R)
  • python으로 작성 시
    • 저수준 API인 RDD로 작성하거나 사용자 정의 함수 사용 시 성능저하 발생할 수 있음
    • (파이썬 데이터를 JVM이 이해할 수 dlT도록 변환하는 비용 큼)
    • 고수준 API와 사용자 정의 함수를 부분적으로만 활용하면 성능면에서 큰 차이x
    • 장점 : 다른 언어보다 심플하게 작성 가능

 

Spark 프로그래밍 API

  • 고수준 : DataFrame, SQL, Dataset
    • dataframe - API 간결, 쿼리 최적화 자동으로 해줌, 보통 RDD보다 성능이 좋음
  • 저수준 : RDD
    • 물리적 데이터 배치를 세밀하게 제어해야 하는 상황에서 필요
    • dataframe에서 제공하지 않는 기능 or 공유변수를 다뤄야 하는 기능

 

Spark Job 실행 방법

  • 대화형 쉘(interactive shell)
    • 마스터노드 or 게이트웨이 서버에서 콘솔로 spark or pyspark 실행
    • 따로 spark config 설정하지 않으면 디폴티로 실행됨
  • Spark-submit 콘솔 명령어
    • 콘솔에서 spark-submit을 통해 job 실행
    • /spark-root /*options*/ ex.py
  • ...

 

Spark 실행모드

  • job을 실행할 때 요청한 자원의 물리적인 위치를 결정
  • Local, Client, Cluster 가 있음
  • deploy-mode 옵션으로 지정
  • Local 모드
    • 단일 머신에서만 실행됨
    • 병렬을 위해 스레드를 활용(드라이버, 마스터, 익스큐터 모두 단일 JVM에서 실행됨)
    • 주로 테스트용으로 사용
  • Client 모드
    • job이 제출되는 서버에서 드라이버 프로세스가 생성됨
    • 이를 매개체롤 Spark 어플리케이션의 진행 과정 모니터링 가능
    • but 드라이버와 익스큐터 사이의 시간지연
  • Cluster 모드
    • 내부적으로 동작
    • 대화형 쉘과 진행 로그를 실시간으로 볼 수 없음
    • but 애플리케이션 마스터 프로세스가 복원될 수 있음 -> 탄력적
    • Spark 애플리케이션 배포할 때 보통 사용

 

Spark Configuration

  • Spark - 인메모리 중심의 연산, 올바른 Config 설정이 중요
    • 디폴트 : sparkdir/conf/spark-default.conf
    • Sparks Job마다 다르게 설정 - spark-submit로 job을 날릴 때 conf 옵션 사용
    • Spark 프로그램 내부에서 SprakSession의 conf.set함수로도 설정 가능
  • http://spark.apache.org/docs/latest/configuration.html#spark-configuration 참조

 

'개발일기 > DataBase' 카테고리의 다른 글

pycharm install & setting  (0) 2021.06.18
redis tuning  (0) 2021.06.04
spark tuning..  (0) 2021.05.25
Spark Tuning  (0) 2021.05.24
spark-wordcount quick example (Spark streaming programming guide)  (0) 2021.05.20