1、命令 html
注意./BnmsKpiCal-0.0.1.jar包必定要放在最後面,要否則jar包後面的參數不會生效java
1.向spark standalone以client方式提交job。python
./spark-submit --master spark://hadoop3:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.3.0-hadoop2.3.0.jar
--deploy-mode client,在提交的節點會有個main進程,來運行Driver program。若是使用--deploy-mode cluster,則Driver program直接運行在worker中。apache
2.向spark on yarn以client方式提交job.網絡
./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.3.0-hadoop2.3.0.jar
2、Spark1.0.0 應用程序部署工具spark-submitapp
隨着Spark的應用愈來愈普遍,對支持多資源管理器應用程序部署工具的需求也愈來愈迫切。Spark1.0.0的出現,這個問題獲得了逐步改善。從Spark1.0.0開始,Spark提供了一個容易上手的應用程序部署工具bin/spark-submit,能夠完成Spark應用程序在local、Standalone、YARN、Mesos上的快捷部署。
1:使用說明
進入$SPARK_HOME目錄,輸入bin/spark-submit --help能夠獲得該命令的使用幫助。
hadoop@wyy :/app/hadoop/spark100$ bin/spark-submit --help
Usage: spark-submit [options] <app jar | python file> [app options]
Options:
--master MASTER_URL spark://host:port, mesos://host:port, yarn, or local.
--deploy-mode DEPLOY_MODE driver運行之處,client運行在本機,cluster運行在集羣
--class CLASS_NAME 應用程序包的要運行的class
--name NAME 應用程序名稱
--jars JARS 用逗號隔開的driver本地jar包列表以及executor類路徑
--py-files PY_FILES 用逗號隔開的放置在Python應用程序PYTHONPATH上的.zip, .egg, .py文件列表
--files FILES 用逗號隔開的要放置在每一個executor工做目錄的文件列表
--properties-file FILE 設置應用程序屬性的文件放置位置,默認是conf/spark-defaults.conf
--driver-memory MEM driver內存大小,默認512M
--driver-java-options driver的java選項
--driver-library-path driver的庫路徑Extra library path entries to pass to the driver
--driver-class-path driver的類路徑,用--jars 添加的jar包會自動包含在類路徑裏
--executor-memory MEM executor內存大小,默認1G
Spark standalone with cluster deploy mode only:
--driver-cores NUM driver使用內核數,默認爲1
--supervise 若是設置了該參數,driver失敗是會重啓
Spark standalone and Mesos only:
--total-executor-cores NUM executor使用的總核數
YARN-only:
--executor-cores NUM 每一個executor使用的內核數,默認爲1
--queue QUEUE_NAME 提交應用程序給哪一個YARN的隊列,默認是default隊列
--num-executors NUM 啓動的executor數量,默認是2個
--archives ARCHIVES 被每一個executor提取到工做目錄的檔案列表,用逗號隔開
關於以上spark-submit的help信息,有幾點須要強調一下:工具
關於--master --deploy-mode,正常狀況下,能夠不須要配置--deploy-mode,使用下面的值配置--master就能夠了,使用相似 --master spark://host:port --deploy-mode cluster會將driver提交給cluster,而後就將worker給kill的現象。oop
Master URL | 含義 |
local | 使用1個worker線程在本地運行Spark應用程序 |
local[K] | 使用K個worker線程在本地運行Spark應用程序 |
local
|
使用全部剩餘worker線程在本地運行Spark應用程序 |
spark://HOST:PORT | 鏈接到Spark Standalone集羣,以便在該集羣上運行Spark應用程序 |
mesos://HOST:PORT | 鏈接到Mesos集羣,以便在該集羣上運行Spark應用程序 |
yarn-client | 以client方式鏈接到YARN集羣,集羣的定位由環境變量HADOOP_CONF_DIR定義,該方式driver在client運行。 |
yarn-cluster | 以cluster方式鏈接到YARN集羣,集羣的定位由環境變量HADOOP_CONF_DIR定義,該方式driver也在集羣中運行。 |
若是要使用--properties-file的話,在--properties-file中定義的屬性就沒必要要在spark-sumbit中再定義了,好比在conf/spark-defaults.conf 定義了spark.master,就能夠不使用--master了。關於Spark屬性的優先權爲:SparkConf方式 > 命令行參數方式 >文件配置方式,具體參見Spark1.0.0屬性配置。spa
和以前的版本不一樣,Spark1.0.0會將自身的jar包和--jars選項中的jar包自動傳給集羣。.net
Spark使用下面幾種URI來處理文件的傳播:
file:// 使用file://和絕對路徑,是由driver的HTTP server來提供文件服務,各個executor從driver上拉回文件。
hdfs:, http:, https:, ftp: executor直接從URL拉回文件
local: executor本地自己存在的文件,不須要拉回;也能夠是經過NFS網絡共享的文件。
若是須要查看配置選項是從哪裏來的,能夠用打開--verbose選項來生成更詳細的運行信息以作參考,能夠知道配置是如何加載的。建議開啓。