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 |