开发过程中使用的运行模式包括local statdalone yarn mesos,设置完之后,spark就知道job作业运行在什么模式之上.
SparkConf包含了Application应用信息:
val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)
setMaster:
In practice, when running on a cluster, you will not want to hardcode
master
in the program, but rather launch the application withspark-submit
and receive it there.当我们把spark运行在集群上时,不要讲master设置成硬编码模式,简单来说就是不要在代码中写死setMaster,而是使用spark-submit来提交,在本地开发的时候可以硬编码setMaster,但是最好也是设置成参数配置.
创建mvn管理的scala-simple项目就不多做赘述了
<dependencies>
<dependency>
<groupId>org.scala-langgroupId>
<artifactId>scala-libraryartifactId>
<version>${scala.version}version>
dependency>
<dependency>
<groupId>org.apache.sparkgroupId>
<artifactId>spark-core_2.11artifactId>
<version>2.2.1version>
dependency>
dependencies>
package com.ruozedata.spark
import org.apache.spark.{SparkConf, SparkContext}
object SparkContextApp {
def main (args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("SparkContextApp").setMaster("local[2]")
val sc = new SparkContext(sparkConf)
sc.stop()
}
}
1.–mater:指定运行模式
2.–name:指定应用程序的名字
3.–jars:逗号分隔的本地jar包的指定
4.–conf:指定配置参数
5.–driver-****:drive的一系列参数
6.–executor-memory:指定executor端的内存
7.–executor-cores:指定executor端的cores
8.–driver-cores:指定driver端的cores
9.–queue:指定分配队列
10.–num-executors:设置执行端的个数
Spark context available as ‘sc’ (master = local[2], app id = local-1557126095413).
Spark session available as ‘spark’.
启动之后自动创建了sparkcontext,别名叫sc,app-id是local-1557126095413,但是我们在webUI页面发现我们虽然没有指定运行的Appname,但是启动脚本中有默认的Appname
spark-shell --master local[2]
#在spark-shell的启动脚本中可以找到默认的设置,其底层也是调用spark-submit进行作业的提交的
function main() {
if $cygwin; then
# Workaround for issue involving JLine and Cygwin
# (see http://sourceforge.net/p/jline/bugs/40/).
# If you're using the Mintty terminal emulator in Cygwin, may need to set the
# "Backspace sends ^H" setting in "Keys" section of the Mintty options
# (see https://github.com/sbt/sbt/issues/562).
stty -icanon min 1 -echo > /dev/null 2>&1
export SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Djline.terminal=unix"
"${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
stty icanon echo > /dev/null 2>&1
else
export SPARK_SUBMIT_OPTS
"${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
fi
}
local模式:local开头,后面跟的是当前时间的时间戳
yarn模式:Application开头
java.io.tmpdir:操作系统缓存的临时目录
主要是下面两个路径下的jar包
$SPARK_HOME/conf/*
$SPARK_HOME/jars/*.jar
通过spark-shell的脚本,我们可以发现Spark-Shell的由来,底层也是调用spark-submit来进行提交的
tips:脚本最后的"$@"表示所有参数的列表