1:直接Spark-shellshell
会启动一个SparkSubmit进程来模拟Spark运行环境,是一个单机版的。oop
2:Spark-shell --master Spark://hadoop1:7077,hadoop2:7077,hadoop3:7077 --total-executor-cores 5 --executor-memory 5G源码分析
指定任务提交的集群路径在哪里。这就须要提早启动一个真实的Standalone集群。spa
能够指定多个master的地址,用逗号隔开。scala
若是没有指定--total-executor-cores 5 --executor-memory 5G,那么就会使用集群中全部可用的资源,没一个worker中都会启动executor。orm
1/就初始化了一个SparkContext对象为SC,而在这个对象的源码中,对象
1.2/接着建立一个两个Actor:ClientActor和DriverActor。进程
其中ClientActor就会根据刚刚的--master 来链接指定的集群hadoop
在worker中会建立好那些运行程序的executor了。资源
2/同时也建立了一个SparkSQl对象,用于SparkSQl操做的。
3/最终会进入一个scala的交互界面中。
此时能够写经过RDD的transform和action的算子,最终经过action算子调用DAGSchudler对任务进行stage切分,而后经过TaskSchudler调用DriverActor将Stage下发到executor执行。
用来提交在IDEA中编写而且打包成jar的包到集群中运行。
具体的提交过程,请看Spark源码分析的任务提交过程。
Spark-Submit --master spark://hadoop1:7077,hadoop2:7077 --executor-memory 5g --total-executor-cores 10 --class 主类路径 jar包的路径 文件的输入路径 文件的输出路径