本片文章主要结合官网的提交说明进行,详情请看http://spark.apache.org/docs/latest/submitting-applications.html
./bin/spark-submit \--class --master \--deploy-mode \--conf = \... # other options \[application-arguments]
标准格式
spark通过命令行来提交,其中一些参数可以在程序中进行指定
/home/tong/installDirectory/spark-1.4.0-bin-hadoop2.6/bin/spark-submit //提交命令位置的指定
--class com.cloudera.streamDemo.StreamingErrorCount //这个参数可以进行指定jar包的入口位置,不是物理位置
--master spark://spark1:7077 //指定spark执行的master和端口号,可以在程序中SparkConf中进行指定
target/streamDemo-1.0-SNAPSHOT.jar //编译好jar包的位置
/spark/streamData.txt 1//最后的参数为程序执行过程中需要的文件,这里指定的为hdfs中的文件位置,指定参数
其他的一些参数还有:
--conf可以以key=value的形式进行spark提交过程中的任意参数的指定,例如执行的核数,执行的存储空间等等。
--deploy-mode可以部署你的驱动在工作节点上(cluster)或者是作为外部客户端部署在本地(client)。一种普遍的部署策略是从一台在物理上依赖于你的集群worker节点的网关(入口)机器来提交你的应用。在这种模式下,client模式是更为合适的,在client模式中,提交过程(submit process)被当做集群中的一个client,驱动在submit下被直接发送,应用的输入输出被显在控制台,这种模式对于那种涉及到REPL的应用是比较合适的,例如spark-shell下。
此外,如果你的应用是从一台距离你的工作节点很远的机器上提交的,例如你本地的笔记本,那么使用cluster模式是非常普遍的,这种模式可以降低在驱动(drivers)和具体执行机器的中间的网络延迟,特别注意的是,cluster模式当前对于mesos集群是并不支持的。当前仅仅是yarn对于Python应用支持cluster模式。在standalone的cluster模式下,可以指定--supervise参数来确保如果驱动以非0退出码失败的时候,他可以确保驱动的自动重启。当然还可以在submit下指定其他的参数,都是比较简单的。下面是一些事例。
# 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 on a Spark Standalone cluster in cluster deploy mode with supervise
./bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master spark://207.184.161.138:7077 \--deploy-mode cluster--supervise--executor-memory 20G \--total-executor-cores 100 \/path/to/examples.jar \1000# Run on a YARN cluster
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master yarn-cluster \ # can also be `yarn-client` for client mode--executor-memory 20G \--num-executors 50 \/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