1. 4种运行模式概述图
(1) local 本地模式
该模式主要用作测试用,一般编写的 spark 程序,将 master 设置为 local 或者 local[n],以本地模式运行,所有的代码都在一个 Jvm 里面。
(2) 伪分布式模式
该模式所有的 Driver 和 Executor 都运行在同一台机器,在单机上模拟集群环境,和 Standalone 模式运行过程大致相同。
(3) Standalone 模式
该模式由 Spark 自带的集群管理模式,不依赖外部的资源管理器,由 Master 负责资源的分配管理,Worker 负责运行 Executor ,具体的运行过程可参考之前介绍 Spark 运行模式的篇章。
(4) yarn 模式
该模式由 yarn 负责管理整个集群资源,不再有 Master 和 Worker,根据 yarn-client 和 yarn-cluster 的不同。
yarn-client 中 driver运行在本地客户端,负责调度application,会与yarn集群产生大量的网络通信,但本地可以看见日志。
yarn-cluster 中 driver运行在yarn集群中,看不见日志。
(5) Mesos 模式
和 yarn 一样,Mesos 中,Spark 的资源管理从 Standalone 的 Master 转移到 Mesos Manager 中。
2. 不同的提交参数说明
./bin/spark-submit \
//主类入口
--class <main-class> \
// 指定appname
--name <appname>
\
//pom依赖所需要的resource目录下的资源文件
--files \
//需要的jar包
--jar \
//运行内存
--executor-memory 1G \
//运行内核数
--num-executors 1 \
//运行模式指定
--master <master-url> \
//指定client模式或者cluster模式,默认是client
--deploy-mode <deploy-mode> \
//设置参数
--conf <key>=<value> \
//jar包路径
<application-jar> \
//main方法的参数
[application-arguments]
# 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 \
--deploy-mode cluster \ # can be client for client mode
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
1000