Hadoop Echo System

스파크 애플리케이션 제출

2024. 3. 4. 12:19
목차
  1. 스파크 애플리케이션 제출
  2. 종속성이 있는 애플리케이션 번들링
  3. Spark Submit
  4. Master URL

스파크 애플리케이션 제출

Spark bin 폴더의 spark-submit 스크립트로 사용자가 작성한 애플리케이션을 클러스터에 배포할 수 있다. spark-submit은 모든 클러스터 매니저와 같이 사용할 수 있으므로 클러스터 매니저에 따라 애플리케이션을 변경할 필요는 없다.

종속성이 있는 애플리케이션 번들링

만약 애플리케이션의 코드에 의존성이 있는 경우 의존성과 함께 코드를 패키징해야한다. 따라서 코드와 종속성을 포함하는 어셈블리 jar(또는 jber jar)을 만든다. 어셈블리 jar을 만들기 위해 sbt, maven와 같은 어셈블리 플러그인을 사용할 수 있다. 어셈블리 jar을 만들 때 Spark 및 Hadoop 종속성을 provided 종속성으로 지정한다. 클러스터 매니저가 런타임 시에 해당 종속성을 제공하므로 같이 번들로 묶을 필요가 없다.

 

파이썬의 경우, spark-submit의 --py-files 옵션을 사용해 애플리케이션과 함께 배포할 .py, .zip, .egg 파일을 추가할 수 있다. 여러 파이썬 파일에 의존하는 경우 .zip, .egg로 패키징하는 것이 좋다.

Spark Submit

spark의 bin/spark-submit 스크립트로 애플리케이션을 클러스터에 배포, 제출할 수 있다.

./bin/spark-submit \
  --class <main-class> \
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

일반적으로 사용되는 몇 가지 옵션은 아래와 같다.

  • --class : 애플리케이션의 시작 클래스(e.g. org.apache.spark.examples.SparkPi)
  • --master : 클러스터의 master URL (e.g. spark://23.195.26.187:7077)
  • --deploy-mode : 배포 모드, cluster 또는 client를 지정한다. default는 client
  • --conf : 키 값 형식의 Spark 구성 속성
  • application-jar : 애플리케이션과 모든 종속성이 포함된 jar의 경로, URL은 클러스터의 모든 노드가 접근할 수 있어야한다. (e.g hdfs://, file://)
  • application-argument : 메인 클래스의 메인 메서드가 전잘되는 인자 (있는 경우만)

파이썬 애플리케이션의 경우 <application-jar> 대신 .py 파일을 전달하고 --py--files 옵션으로 Python .zip, .egg, .py 파일을 추가한다. 참고로 standalone 모드는 python 애플리케이션의 클러스터 모드를 지원하지 않는다.

# Run application locally on 8 cores
./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master local[8] \
  /path/to/examples.jar \
  100

# Run on a Spark standalone cluster in client deploy mode
./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master spark://207.184.161.138:7077 \
  --executor-memory 20G \
  --total-executor-cores 100 \
  /path/to/examples.jar \
  1000
  
  # Run a Python application on a Spark standalone cluster
./bin/spark-submit \
  --master spark://207.184.161.138:7077 \
  examples/src/main/python/pi.py \
  1000

# Run on a YARN cluster in cluster deploy mode
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master yarn \
  --deploy-mode cluster \
  --executor-memory 20G \
  --num-executors 50 \
  /path/to/examples.jar \
  1000

# Run on a Kubernetes cluster in cluster deploy mode
./bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master k8s://xx.yy.zz.ww:443 \
  --deploy-mode cluster \
  --executor-memory 20G \
  --num-executors 50 \
  http://path/to/examples.jar \
  1000

Master URL

master url 옵션에는 아래 형식이 들어갈 수 있다.

마스터 URL 의미
local 하나의 워커 스레드로 로컬에서 Spark 실행 (병렬 처리가 없음)
local[K] K개의 워커 스레드로 로컬에서 Spark 실행 (이상적으로는 로컬 컴퓨터의 코어 수로 지정)
spark://HOST:PORT 지정된 Spark Standalone cluster의 마스터와 연결, 기본적으로 7077포트 사용
yarn 배포 모드에 따라 클라이언트 또는 클러스터 모드에서 yarn 클러스터와 연결
k8s://HOST:PORT 배포 모드에 따라 클라이언트 또는 클러스터 모드에서 kubernest 클러스터와 연결
kubernetes의 API 서버가 지정됨

 

'Hadoop Echo System' 카테고리의 다른 글

YARN  (0) 2024.03.08
스파크 클러스터  (0) 2024.03.03
  1. 스파크 애플리케이션 제출
  2. 종속성이 있는 애플리케이션 번들링
  3. Spark Submit
  4. Master URL
'Hadoop Echo System' 카테고리의 다른 글
  • YARN
  • 스파크 클러스터
gunjoon98
gunjoon98
gunjoon98
하루한방울
gunjoon98
전체
오늘
어제
  • 분류 전체보기 (139)
    • Computer Science (60)
      • Network (14)
      • DataBase (12)
      • Algorithm (14)
      • OS (9)
      • Computer Terminology (1)
      • DataStructure (10)
    • Spring (24)
      • Spring Basic (2)
      • Spring MVC (11)
      • Spring DB (4)
      • Spring Security (2)
      • Spring Test (1)
      • Spring Legacy (2)
      • 기타 (2)
    • Java (9)
      • Basic (7)
      • OOP (0)
    • WEB (14)
      • CSS (4)
      • JS (0)
      • HTTP (10)
    • PS (11)
      • 종만북 (10)
      • 모의 코테 (0)
      • 오답노트 (1)
    • Linux (6)
      • Ubuntu (6)
    • CM (5)
      • Git (5)
    • Project (0)
      • Deubot (0)
      • Scoreboard (0)
    • Infra (5)
      • Cloud (1)
      • CI&CD (3)
      • 쿠버네티스 (1)
    • Hadoop Echo System (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
gunjoon98
스파크 애플리케이션 제출
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.