Spark提供了一个客户端应用程序提交工具spark-submit,使用该工具可以将编写好的Spark应用程序提交到Spark集群。
spark-submit的使用格式如下:
$ bin/spark-submit [options] <app jar> [app options]
格式中的options表示传递给spark-submit的控制参数;app jar表示提交的程序JAR包(或Python脚本文件)所在位置;app options表示jar程序需要传递的参数,如main()方法中需要传递的参数。
例如,在Standalone模式下,将Spark自带的求圆周率的程序提交到集群。进入Spark安装目录,执行以下命令:
$ bin/spark-submit \ --master spark://centos01:7077 \ --class org.apache.spark.examples.SparkPi \ ./examples/jars/spark-examples_2.12-3.2.1.jar
上述命令中的--master参数指定了Master节点的连接地址,该参数根据不同的Spark集群模式,其取值也有所不同,常用取值如表2-3所示。
表2-3 spark-submit的--master参数取值介绍
若不添加--master参数,则默认使用本地模式local[*]运行。
除了--master参数外,spark-submit还提供了一些控制资源使用和运行时环境的参数。在Spark安装目录中执行以下命令,可列出所有可以使用的参数:
$ bin/spark-submit --help
spark-submit常用参数解析如表2-4所示。
表2-4 spark-submit的常用参数介绍
例如,在Standalone模式下,将Spark自带的求圆周率的程序提交到集群,并且设置Driver进程使用内存为512MB,每个Executor进程使用内存为1GB,每个Executor进程所使用的CPU核心数为2,提交方式为cluster(Driver进程运行在集群的工作节点中),执行命令如下:
$ bin/spark-submit \ --master spark://centos01:7077 \ --deploy-mode cluster \ --class org.apache.spark.examples.SparkPi \ --driver-memory 512m \ --executor-memory 1g \ --executor-cores 2 \ ./examples/jars/spark-examples_2.12-3.2.1.jar
在Spark On YARN模式下,以同样的应用配置运行上述例子,只需将参数--master的值改为yarn即可,命令如下:
$ bin/spark-submit \ --master yarn \ --deploy-mode cluster \ --class org.apache.spark.examples.SparkPi \ --driver-memory 512m \ --executor-memory 1g \ --executor-cores 2 \ ./examples/jars/spark-examples_2.12-3.2.1.jar
注意,Spark不同集群模式下应用程序的提交提交命令,主要是参数--master的取值不同,其他参数的取值一样。