spark application 수행시 config 정보를 설정하는 방법은 크게 두 가지가 있다.
- Spark 서버에 설정
- spark-env.sh
Spark Process 수행시 환경변수 설정 값 - spark-default.properties
Spark 설정 기본값
- spark-env.sh
- Spark Application 에서 SparkConf() 에 설정
수많은 설정 파라메터들이 있으나, 기본값들이 미리 다 지정되어 있기 때문에 변경이 필요한 값들만 변경해서 설정하면 된다.
설정을 진행하다보면, worker 와 executor 설정들이 나온다.
예를 들면,
SPARK_WORKER_INSTANCES, SPARK_WORKER_MEMORY
spark.executor.instances, spark.executor.memory
worker 와 executor 두 개의 설정에는 어떠한 차이가 있을까?
각각의 역할은 무엇이고, 어떻게 설정해야 할까?
먼저 Spark Cluster 가이드 페이지를 살펴보자. 아래와 같이 Driver Program 이 어떻게 수행되는지 그림으로 설명하고 있다.
참고로 Cluster Manager 는 여기서 Yarn 을 의미한다(현재 환경은 Yarn 위에서 Spark 가 동작하는 구조이다.)
Worker Node 에 Executor 가 포함되어 있음을 확인 할 수 있을 것이다.
하나의 물리적 Spark 장비에 여러 개의 Worker 를 생성할 수 있고, Worker 는 여러 개의 Executor 를 가질 수 있다.
이런 개념을 가지고 Spark 설정들을 다시 살펴보자.
- SPARK_WORKER_INSTANCES - 3
- SPARK_WORKER_MEMORY - 1g
- spark.executor.instances - 2
- spark.executor.memory - 256m
에를 들어 위처럼 설정했다고 가정하자.
그럼 하나의 장비에 3개의 worker 가 생성되고, 1g씩 할당받는다. 그리고 각 worker 에 2개의 executor 가 생성되고, 512m을 할당받는다.
여기서 하나의 장비만 있다고 가정한다면, 전체 worker 수는 3개이고, 전체 executor 수는 6개가 되며, memory 는 3g 가 된다.
(산술적으로 메모리를 계산하였으나, 실제로 딱 맞게 할당되진 않는다.)
'BigData > Spark' 카테고리의 다른 글
spark-submit 을 이용하여 Custom Argument 전달하기 (0) | 2015.07.17 |
---|---|
Learning Spark Chapter. 5 Loading & Saving Data (0) | 2015.07.17 |
Learning Spark Chapter. 4 Key/Value Pairs 사용하기 (0) | 2015.07.03 |
Learning Spark Chapter. 3 RDD 프로그래밍 (0) | 2015.07.03 |
Learning Spark Chapter. 2 스파크 설치 및 무작정 시작하기 (2) | 2015.07.03 |