文章目錄
-
- 例子
- 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)目錄結構
(2)送出指令
spark2-submit --master local --deploy-mode client main.py
複制
yarn
(1)目錄結構
其中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