관리 메뉴

IT.FARMER

Spark submit 본문

BigData/Spark

Spark submit

아이티.파머 2020. 4. 6. 09:44
반응형

2020/04/03 - [BigData/Spark] - spark linux install (Master / Worker)

2020/04/06 - [BigData/Spark] - spark sql

2020/04/06 - [BigData/Spark] - Spark 모니터링

2020/04/06 - [BigData/Spark] - Spark Dataset

2020/04/06 - [BigData/Spark] - Spark Dataset 데이터 조회 예제

2020/04/06 - [BigData/Spark] - Dataset DataFrame Convert

2020/04/06 - [BigData/Spark] - Spark submit

 

 

스칼라나, 자바의 경우엔 jar 파일로 묶어서 Spark 에게 잡을 준다. java -jar 로 Core를 실행시켜 수행 할수도 있지만, Spark 를 Clusting 해 두었다면 Spark Submit 로 Job을 할당하고 분산시켜 데이터를 프로세싱 하여, 결과를 빠르게 얻어 낼수 있다.

Spark 초짜이다 보니 이부분 때문에 처음에 많은 고민을 한거 같다. Spark로 원격호출은 안되는건가 ? Spark Submit 은 꼭서야 만 하는건가? 하는 부분이다. 원격호출 및 SparkSubmit 에관한 궁금증은 조금씩 Spark를 공부해가며 알게 되었다. Spark Standalone 구성에 에서 Master는 Job을 분배하고 모니터링 해주며 일은 worker(slave)가 한다. spark를 clusterling하고 worker가 여러개 존재한다면 spark-submit로 job을 밀어주고 worker로 분배하여 분산처리에 대한 이점을 얻어야 한다. Single로 사용할것이라면, 굳이 서밋을 수행하지 않아도 된다고 생각한다.

서밋을 날릴때 deploy-mode 에는 두가지가 잇는데 client와 cluster 이다.

 

client : 실행을 호출한 곳에서 드라이버가 생성됨

cluster : 클러스터 내부에서 드라이버가 생성됨

 

Spark application submitting

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


#example client mode
./spark-submit \
     --master spark://210.221.235.193:7077 \
     --deploy-mode client \
     --class org.apache.spark.examples.SparkPi \
     /mnt/d/devUtility/spark/master/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples*.jar \
     100

#example cluster mode
./spark-submit \
     --master spark://210.221.235.193:7077 \
     --deploy-mode cluster \
     --class org.apache.spark.examples.SparkPi \
     /mnt/d/devUtility/spark/master/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples*.jar \
     100

 

Spark submit command 예제

##########################################################
#  client mode test submit
##########################################################
./spark-submit \
     --master spark://210.221.235.193:7077 \
     --class org.apache.spark.examples.SparkPi \
     ~/spark/master/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples*.jar \
     100

./spark-submit \
     --master spark://210.221.235.193:7077 \
     --deploy-mode client \
     --class org.apache.spark.examples.SparkPi \
     /mnt/d/devUtility/spark/master/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples*.jar \
     100


##########################################################
#  cluster mode test submit
##########################################################
./spark-submit \
     --master spark://210.221.235.193:7077 \
     --deploy-mode cluster \
     --class org.apache.spark.examples.SparkPi \
     ~/spark/master/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples*.jar \
     100


# local Spark Server submit
./bin/spark-submit \
    --driver-java-options "-Dgrp.active.profile=test" \
    --class com.grp.GRPCalculateApplication \
    --master spark://10.184.70.55:7077 \
    --name "GRP-Calculate-application" \
    /mnt/d/project/mezzomedia/IdeaProjects/GRP-server/grp.calculate.service/target/grp-calculate-service.jar 1 SCENARIO

##########################################################
# hadoop2 cluster mode test
##########################################################
./spark-submit \
     --master yarn \
     --deploy-mode cluster \
     --class org.apache.spark.examples.SparkPi \
     /mnt/d/devUtility/spark/master/spark-2.4.4-bin-hadoop2.7/examples/jars/spark-examples*.jar \
     100

6.1 Submit Option

  • -class: 어플리케이션 엔트리 포인트 (e.g. org.apache.spark.examples.SparkPi)
  • -master: 클러스터의 마스터 URL (e.g. spark://23.195.26.187:7077)
  • –deploy-mode: 드라이버 프로그램을 워크노드 상에 배포할 것인지(cluster) 또는 외부 클라이언트로 사용할 것인지 (client)(default: client)
  • –conf: key=value 포맷의 스파크 설정. “key=value”처럼 따옴표로 묶어야되며 각 값들은 스페이스 구분된다.
  • application-jar: 번들된 jar의 경로. URL은 클러스터에서 글로벌하게 접근가능해야 한다. 예를 들어 hdfs:// path 또는 a file:// path는 모든 노드에서 접근 가능해야 한다.
  • application-arguments: 메인클래스 메인메소드에 전달할 인자 마스터 URL들의 의미는 다음과 같다.
  • -local : 스파크를 하나의 워커 스레드에서 구동
  • -local[K] : 스파크를 로컬에서 K개의 워커 스레드에서 구동
  • -spark://HOST:PORT : 주어진 스파크 standalone 마스터에 접속 어플리케이션 구동
  • -mesos://HOST:PORT : 주어진 mesos 클러스터 마스커에 접속 어플리케이션 구동
  • -yarn –deploy-mode 값에 따른 YARN 클러스터 모드로 접속하거나 YARN 클러스터 클러스터에 클라이언트로 연결

 

 

 

 

반응형

'BigData > Spark' 카테고리의 다른 글

Dataset DataFrame Convert  (0) 2020.04.06
Spark Dataset 데이터 조회 예제  (0) 2020.04.06
Spark Dataset  (0) 2020.04.06
Spark 모니터링  (0) 2020.04.06
spark sql  (0) 2020.04.06