天天看點

[1015]spark-submit送出任務及參數說明

文章目錄

    • 例子
    • spark-submit 詳細參數說明
      • --master
      • --deploy-mode
      • --class
      • --name
      • --jars
      • --packages
      • --exclude-packages
      • --repositories
      • --py-files
      • --files
      • --conf PROP=VALUE
      • --properties-file
      • --driver-memory
      • --driver-java-options
      • --driver-library-path
      • --driver-class-path
      • --driver-cores
      • --executor-memory
      • --total-executor-cores
      • --num-executors
      • --executor-core
    • 送出python腳本
    • spark2-submit 送出 python(pyspark)項目
      • local
      • yarn

spark-submit 可以送出任務到 spark 叢集執行,也可以送出到 hadoop 的 yarn 叢集執行。

例子

一個最簡單的例子,部署 spark standalone 模式後,送出到本地執行。

./bin/spark-submit \
--master spark://localhost:7077 \
examples/src/main/python/pi.py           

複制

如果部署 hadoop,并且啟動 yarn 後,spark 送出到 yarn 執行的例子如下。

注意,spark 必須編譯成支援 yarn 模式,編譯 spark 的指令為:

build/mvn -Pyarn -Phadoop-2.x -Dhadoop.version=2.x.x -DskipTests clean package           

複制

其中, 2.x 為 hadoop 的版本号。編譯完成後,可執行下面的指令,送出任務到 hadoop yarn 叢集執行。

./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
--queue thequeue \
examples/target/scala-2.11/jars/spark-examples*.jar 10           

複制

spark-submit 詳細參數說明

–master

master 的位址,送出任務到哪裡執行,例如 spark://host:port, yarn, local

MASTER_URL:設定叢集的主URL,用于決定任務送出到何處執行。

常見的選項有

  • local:送出到本地伺服器執行,并配置設定單個線程
  • local[k]:送出到本地伺服器執行,并配置設定k個線程
  • spark://HOST:PORT:送出到standalone模式部署的spark叢集中,并指定主節點的IP與端口
  • mesos://HOST:PORT:送出到mesos模式部署的叢集中,并指定主節點的IP與端口
  • yarn:送出到yarn模式部署的叢集中

–deploy-mode

在本地 (client) 啟動 driver 或在 cluster 上啟動,預設是 client

  • DEPLOY_MODE:設定driver啟動的位置,可選項如下,預設為client
  • client:在用戶端上啟動driver,這樣邏輯運算在client上執行,任務執行在cluster上
  • cluster:邏輯運算與任務執行均在cluster上,cluster模式暫時不支援于Mesos叢集或Python應用程式

–class

應用程式的主類,僅針對 java 或 scala 應用

CLASS_NAME:指定應用程式的類入口,即主類,僅針對java、scala程式,不作用于python程式

–name

應用程式的名稱

–jars

用逗号分隔的本地 jar 包,設定後,這些 jar 将包含在 driver 和 executor 的 classpath 下

–packages

包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

–exclude-packages

為了避免沖突 ,指定的參數–package中不包含的jars包

–repositories

遠端 repository

附加的遠端資源庫(包含jars包)等,可以通過maven坐标進行搜尋

–py-files

PY_FILES:逗号隔開的的

.zip、.egg、.py

檔案,這些檔案會放置在PYTHONPATH下,該參數僅針對python應用程式

–files

FILES:逗号隔開的檔案清單,這些檔案将存放于每一個工作節點程序目錄下

–conf PROP=VALUE

指定spark配置屬性的值,格式為PROP=VALUE, 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

–properties-file

指定需要額外加載的配置檔案,用逗号分隔,如果不指定,預設為 conf/spark-defaults.conf

–driver-memory

Driver記憶體,預設 1G

–driver-java-options

傳給 driver 的額外的 Java 選項

–driver-library-path

傳給 driver 的額外的庫路徑

–driver-class-path

傳給 driver 的額外的類路徑,用–jars 添加的jar包會自動包含在類路徑裡

–driver-cores

Driver 的核數,預設是1。在 yarn 或者 standalone 下使用

–executor-memory

每個 executor 的記憶體,預設是1G

–total-executor-cores

所有 executor 總共的核數。僅僅在 mesos 或者 standalone 下使用

–num-executors

啟動的 executor 數量。預設為2。在 yarn 下使用

–executor-core

每個 executor 的核數。在yarn或者standalone下使用

當’–master’參數設定為Standalone,‘–deploy-mode’參數設定為cluster時,如下選項可以設定:

  • –driver-cores NUM:driver使用的核心數,預設為1

當’–master’參數設定為Standalone或者Mesos,‘–deploy-mode’參數設定為cluster時,如下選項可以設定:

  • –supervise:如果設定了該參數,driver失敗是會重新開機
  • –kill SUBMISSION_ID:如果設定了該參數,則會殺死指定SUBMISSION_ID的driver程序
  • –status SUBMISSION_ID:如果設定了該參數,則請求傳回指定SUBMISSION_ID的driver的狀态

當’–master’參數設定為Standalone或者Mesos時,如下選項可以設定:

  • –total-executor-cores NUM:設定叢集中所有工作節點上executor使用的核心總數

當’–master’參數設定為Standalone或者YARN時,如下選項可以設定:

  • –executor-cores NUM:每個executor使用的核數

當’–master’參數設定為YARN時,如下選項可以設定:

  • –driver-cores NUM :當–deploy-mode為cluster時,driver使用的核心數,預設為1
  • –queue QUEUE_NAME :将任務送出給哪個YARN隊列,預設為YARN的預設隊列
  • –num-executors NUM:設定啟動的executor數量,預設為2
  • –archives ARCHIVES :被每個executor提取到工作目錄的檔案清單,用逗号隔開

送出python腳本

在送出firstApp.py腳本時,使用如下指令

$ spark-submit \
--master local[2] \
--num-executors 2 \
--executor-memory 1G \
--py-files /home/hadoop/Download/test/firstApp.py           

複制

結果報如下錯誤“Error: Cannot load main class from JAR file:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master”,其中:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master與hadoop安裝路徑相關,雖然python腳本沒有主類這一說,但是可以猜測到該錯誤是由于找不到函數入口導緻,我在這裡找打了一些答案,

--py-fiels

參數是用來添加應用程式所依賴的python檔案的,我們要送出的應用程式可以直接采用如下方式送出,這樣就沒有報錯了

$ spark-submit \
--master local[2] \
--num-executors 2 \
--executor-memory 1G \
 /home/hadoop/Download/test/firstApp.py           

複制

spark2-submit 送出 python(pyspark)項目

兩種方式

  • local
  • yarn

假設一個pyspark的項目下邊有兩個檔案:main.py和utils.py。其中main.py是項目的主入口檔案,utils.py中可能包含一些UDF。

local

(1)目錄結構

[1015]spark-submit送出任務及參數說明

(2)送出指令

spark2-submit --master local --deploy-mode client main.py           

複制

yarn

(1)目錄結構

[1015]spark-submit送出任務及參數說明

其中project.zip是main.py和utils.py兩個檔案的zip壓縮檔案。

(2)送出指令

spark2-submit --master yarn --deploy-mode client --py-files project.zip main.py           

複制

參考:https://www.cnblogs.com/weiweifeng/p/8073553.html

https://www.cnblogs.com/hgz-dm/p/11356392.html

https://blog.csdn.net/qq_28637799/article/details/102529280