2017.12월 기준으로 세 가지 클러스터 매니저를 지원
- standalone mode
- hadoop yarn
- apache mesos
17.1 스파크 애플리케이션 실행을 위한 클러스터 환경
설치형 클러스터 (on-premise cluster)
- 사용 중인 하드웨어를 완전히 제어할 수 있으므로 특정 워크로드의 성능을 최적화
- 고정된 자원
- 자체 파일 저장소( ex.HDFS )를 운영해야하므로 관리포인트가 늘어남
- 자체 파일 저장소를 운영하므로 백업, 가용성 체계도 필요함
공개 클라우드 (public cloud)
- 필요할 때만 자원을 늘리고 줄일 수 있음 ( ex. AWS EMR, EC2 )
- 백업, 복제, 가용성을 자동적으로 지원함
- 파일 저장소를 사용하지 구축하지 않아도 다양한 저장소를 지원함 ( ex.AWS S3 )
17.2 클러스터 매니저
StandAlone Mode
- 경량화 플랫폼
- 하나의 클러스터에서 다수의 스파크 애플리케이션 실행 가능
- 스파크 애플리케이션만 실행 할 수 있음
Local 환경에서 master-worker 실행
# 설치 경로 확인
brew --prefix apache-spark
# 로컬일 경우 22 포트 사용하지 않음
export SPARK_NO_DAEMONIZE=true
# master - slave 실행
/opt/homebrew/Cellar/apache-spark/3.5.1/libexec/sbin/start-master.sh
/opt/homebrew/Cellar/apache-spark/3.5.1/libexec/sbin/start-worker.sh spark://0.0.0.0:7077
standalone cluster 실행하기
# 설치 경로 확인
brew --prefix apache-spark
# 로컬일 경우 22 포트 사용하지 않음
export SPARK_NO_DAEMONIZE=true
# master 실행
- /opt/homebrew/Cellar/apache-spark/3.5.1/libexec/sbin/start-master.sh
- http://0.0.0.0:8080 에서 마스터 프로세스 UI 확인
# slave 실행
- /opt/homebrew/Cellar/apache-spark/3.5.1/libexec/sbin/start-worker.sh spark://0.0.0.0:7077
- start-slave.sh는 conf/slaves 파일에 명시된 각 머신에서 인스턴스를 시작
# history 서버 실행
- cp conf/spark-defaults.conf.template conf/spark-defaults.conf
- vi conf/spark-defaults.conf 에 아래 두 설정 추가
- spark.history.fs.logDirectory file:///opt/homebrew/Cellar/apache-spark/3.5.1/tmp/sparkui
- spark.eventLog.dir file:///opt/homebrew/Cellar/apache-spark/3.5.1/tmp/sparkui
- /opt/homebrew/Cellar/apache-spark/3.5.1/libexec/sbin/start-history-server.sh
- http://0.0.0.0:18080/ 에서 히스토리 프로세스 UI 확인
# job 실행
- spark-submit SparkCode.py 로 잡 실행
- spark.eventLog.dir 에 app-**** 파일 생성 확인
- spark 결과 확인 : http://0.0.0.0:18080/
Yarn에서 스파크 실행하기
- hadoop yarn은 잡 스케줄링과 클러스터 자원 관리용 프레임워크
- Yarn 설정 파일을 HADOOP_CONF_DIR이나 YARN_CONF_DIR 환경변수를 통해 찾아냄
- 스파크와 HDFS를 연동하려면 hdfs-site.xml, core-site.xml 파일을 class path에 포함시켜야 함
ㄴ $SPARK_HOME/spark-env.sh 파일의 HADOOP_CONF_DIR 변수값을 하툽 설정 파일 경로로 지정
17.2.7 애플리케이션 스케줄링
- 스케줄러:
스케줄러는 클러스터 매니저에 의해 제공되는 리소스를 사용하여,
스파크 애플리케이션의 작업을 실행하는 방법을 결정
- FIFO, Capacity Scheduler와 Fair Scheduler를 사용하여 다양한 스케줄링 정책을 구현할 수 있음
- 큐:
스케줄러는 여러 큐를 사용하여 작업을 관리하고 우선 순위를 지정,
각 큐에는 작업이 실행되기를 대기하는 리소스가 할당
- 리소스 할당:
각 애플리케이션에는 실행할 때 필요한 CPU, 메모리 및 기타 리소스가 필요하며
스케줄러가 클러스터 내에서 할당 작업을 실행
'DataPipeline > Spark' 카테고리의 다른 글
| 스파크완벽가이드 - 20장 스트림 처리의 기초 (0) | 2024.08.18 |
|---|---|
| 스파크완벽가이드 - 18장 모니터링과 디버깅 (0) | 2024.08.18 |
| 스파크완벽가이드 - 16장 스파크 애플리케이션 개발하기 (0) | 2024.08.18 |
| 스파크완벽가이드 - 15장 클러스터에서 스파크 실행 (0) | 2024.08.18 |
| 스파크완벽가이드 - 14장 분산형 공유 변수 (0) | 2024.08.17 |