在前面的章节我们已经使用了Spark的两个工具:Spark Shell和Spark Submit,这两个工具对于Spark程序的调试和运行发挥着重要的作用。因此在这里我们对Spark的这两个工具的使用做进一步的分析,使我们可以在调试或者运行程序的时候能够更深入的使用这两个工具来进行Spark程序的计算。
1.Spark交互式工具Spark Shell
Spark Shell是Spark特意为用户提供一种交互式命令终端,是学习Spark API的一种非常简单有效的工具。通过Spark Shell我们不仅可以进行RDD各种方法的操作,还可以结合它的Web控制页面对任务的运行进行监控,方便于对程序调试。Spark Shell不仅可以本地(Local)模式运行,还可以向集群提交任务。本质上看,Spark Shell是对Spark Submit的一种封装(或者说Spark Shell是调用了Spark Submit)。
(1)下面代码显示的是以本地(Local)模式进入Spark Shell的命令。由于在安装Spark的时候,已经把Spark的bin目录配置在系统环境变量中,所以现在可以直接在其他目录下使用此命令。
可以看到我们使用Spark版本是version 1.1.0,Scala的版本是2.10.2,Java的版本是1.8.0.20
(2)下面的代码显示的是让Spark Shell运行在集群之上。在其后面加入了参数master和它的参数值spark://SparkMaster:7077。
(3)可以在Shell命令终端输入“spark-shell--help”命令查看Spark Shell的附加参数信息(如图3-30所示)。
在图3-30中,--class指的是Spark程序的Main方法所在的object(Scala语言里的伴生对象);--jar指的是要向集群提交的Jar包以及该Jar包的绝对路径;--executor-mem-ory指的是每个Executor的内存大小;--executor-cores指的是每个Executor的CPU个数。这些参数都可以在Spark Shell向集群提交作业的时候作为Spark Shell的附加参数进行设置,而且这些参数一旦在Spark Shell提交作业时设置,它们的优先级是大于系统配置已经在Spark应用程序里的设置的。
2.Spark应用程序部署工具Spark Submit
Spark Submit是目前常用的提交Spark应用给集群的工具,其基本的格式是:(www.xing528.com)
spark-submit[option]<app jar|python file>[app options]
查看spark-submit的参数,可以在命令终端使用spark-submit--help命令,在其附加参数中可以指定Driver和Executor相关配置的信息。如表3-2所示。
spark-submit把Spark应用提交给集群之后,无论是哪种运行模式都可以在Web控制台查看当前作业的运行状况,作业运行的WebUI地址为:http://<driver-node>:4040,其中driver-node指的是Spark的驱动程序(Driver)所在的结点的主机名,4040是Spark运行的作业在WebUI上的端口号(如图3-31所示)。
图3-30 spark-shell的参数
表3-2 spark-submit的参数
(续)
图3-31 Spark作业运行的WebUI地址
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。