一、异同
1、相同点:放置的位置都在/spark/bin目录下面
2、不同点:
(1)、spark-shell本身是交互式的,dos界面上会提供一种类似于IDE的开发环境,开发人员可以在上面进行编程。在运行时,会调用底层的spark-submit方法进行执行。
(2)、spark-submit本身不是交互性的,用于提交在IDEA等编辑器中编译并打包生成的Jar包到集群环境中,并执行。
二、执行
1、spark-shell
(1) 直接Spark-shell
会启动一个SparkSubmit进程来模拟Spark运行环境,是一个单机版的。
(2) Spark-shell --master Spark://hadoop1:7077,hadoop2:7077,hadoop3:7077 --total-executor-cores 5 --executor-memory 5G
指定任务提交的集群路径在哪里。这就需要提前启动一个真实的Standalone集群。
可以指定多个master的地址,用逗号隔开。
如果没有指定--total-executor-cores 5 --executor-memory 5G,那么就会使用集群中所有可用的资源,没一个worker中都会启动executor。
2、spark-submit
具体的提交过程,请看Spark源码分析的任务提交过程。
Spark-Submit --master spark://hadoop1:7077,hadoop2:7077 --executor-memory 5g --total-executor-cores 10 --class 主类路径 jar包的路径 文件的输入路径 文件的输出路径