大数据实验教学系统
使用spark-submit工具提交Spark作业
对于数据的批处理,通常采用编写程序、打.jar包提交给集群来执行,这需要使用Spark自带的spark-submit工具。
一般的部署策略是在一个网关机器上提交应用程序,这个机器和Worker机器部署在一个网络中(例如,Standalone模式的集群中的Master节点)。在此部署策略中,client模式更为合适,client模式中的driver直接跟spark-submit进程一起启动,spark-submit进程在此扮演集群中一个client的角色。应用程序的输入输出依赖于控制台,如此一来,这种模式就特别适合关于REPL(例如,Spark shell)的应用程序。
另一种部署策略是,应用程序通过一台远离Worker节点的机器提交(例如,本地或者便携设备),这种情况下,一般使用cluster模式最小化drivers和executors之间的网络延时。注意,cluster模式暂时不支持于Mesos集群或Python应用程序。
掌握spark-submit工具的使用。
了解spark-submit的主要参数设置。
1、使用spark-submit工具提交Spark自带的样例程序SparkPi程序,计算pi值。
硬件:x86_64 ubuntu 16.04服务器
软件:JDK1.8,Spark-2.3.2
在本实验环境中,Spark安装包位于以下位置:/data/software/spark-2.3.2-bin-hadoop2.7.tgz
在本实验环境中,JDK已安装在以下位置:/opt/jdk
在本实验环境中,Hadoop已安装在以下位置:/opt/hadoop器
1、在Linux环境下,可通过”spark-submit —help”命令来了解spark-submit指令的各种参数说明。
在终端窗口下,执行如下的命令,来查看spark-submit的帮助信息:
1. $ spark-submit --help
2、spark-submit语法如下:
1. spark-submit [options] <app jar | python file> [app options]
其中options的主要标志参数说明如下:
项目 | Value |
---|---|
• —master | 指定要连接到的集群管理器 |
• —deploy-mode | 是否要在本地(“client”)启动驱动程序,或者在集群中(“cluster”)的一台worker机器上。在client模式下,spark-submit将在spark-submit被调用的机器上运行驱动程序。在cluster模式下,驱动程序会被发送到集群的一个worker节点上去执行。默认是client模式 |
• —class | 应用程序的主类(带有main方法的类),如果运行Java或Scala程序 |
• —name | 应用程序易读的名称,这将显示在Spark的web UI上 |
• —jars | 一系列jar文件的列表,会被上传并设置到应用程序的classpath上。如果你的应用程序依赖于少量的第三方JAR包,可以将它们加到这里(逗号分隔) |
• —files | 一系列文件的列表,会被到应用程序的工作目录。这个标志参数可被用于想要分布到每个节点上的数据文件 |
• —py-files | 一系列文件的列表,会被添加到应用程序的PYTHONPATH。这可以包括.py、.egg或.zip文件 |
• —executor-memory | executor使用的内存数量,以字节为单位。可以指定不同的后缀如”512m”或”15g” |
• —driver-memory | driver进程所使用的内存数量,以字节为单位。可以指定不同的后缀如”512m”或”15g” |
请按以下步骤操作。
1、启动Spark集群(standalone)模式。打开终端窗口,执行以下命令:
1. $ cd /opt/spark
2. $ ./sbin/start-all.sh
2、在终端窗口中,执行以下命令,提交SparkPi程序到Spark集群上执行:(注意,执行时请把下面命令中的主机名localhost替换为虚拟机实际的主机名):
1. $ ./bin/spark-submit --master spark://localhost:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.2.jar
参数说明:
• —master参数指定要连接的集群管理器,这里是standalone模式
• —calss参数指定要执行的主类名称(带包名的全限定名称)
• 最后一个参数是所提交的.jar包
3、查看执行结果。如下图所示:
因为有许多输出信息,所以请仔细从中查看执行的计算结果。
实验结果运行准确,无误
经过本节实验的学习,通过学习使用spark-submit工具提交Spark作业,进一步巩固了我们的Spark基础。
对于数据的批处理,通常采用编写程序、打.jar包提交给集群来执行,这需要使用Spark自带的spark-submit工具。