部署Spark应用程序的两种方式分别为:交互式的方式和提交应用的方式。
在不同的应用场景下,可以选择不同的部署方式。一般来说,在开发调试的场景下,往往选择交互式方式来部署应用;而在需要向集群提交应用的场景时,就应该选择提交应用方式了。
Spark为这两种部署方式提供了对应的工具——交互式工具spark-shell和应用程序部署工具spark-submit。其中,spark-shell是一个应用程序,因为spark-shell在启动的时候创建了SparkContext对象,其名称为sc。这两种部署方式基本上可以运行在各种集群部署上。
使用这两种方式部署应用程序时,需要根据不同需求设置不同的使用方法及其命令选项参数,下面分别描述两种方式下的命令使用方法以及命令选项设置。
一、交互方式部署Spark应用程序
在单机模式下使用Spark Shell交互工具部署Spark应用程序,是初学者开始代码实践的最简单的、最快捷的方法。在集群模式下,也可以通过Spark Shell交互工具让开发者更方便地调试代码。
在Spark集群部署主目录下,输入:
可得:
如果查看交互式工具spark-shell的代码的话,可以看到其命令选项的帮助信息是通过调用spark-submit--help来获取的,因此其参数和spark-submit是一样的。
二、提交应用方式部署Spark应用程序
采用提交应用的方式部署Spark应用程序时,应用程序使用提交脚本进行部署:$Spark_HOME/bin/spark-submit。提交部署时,应根据具体的集群模式,配置相应的选项参数。可通过在Spark集群部署的主目录下,输入以下命令查询相应的配置参数:
应用程序部署工具spark-submit的用法如下:
(www.xing528.com)
命令行选项可以在提交时动态修改配置属性,如果配置属性是常用的话,可以放置在conf/spark-defaults.conf文件下,当属性对应JVM配置时,即各种JAVA的OPTS等,可以在conf/spark-env.sh脚本中添加到对应环境变量中。
比如,命令行选项中的比较常用的--jars选项,是逗号分隔的本地jar包列表,支持自动将这些jar包发布并放置到执行环境的CLASS PATH下。可以在提交时动态指定该选项,也可以在conf/spark-defaults.conf中设置相关的CLASS PATH信息,避免每次提交时都要动态指定,而且可以避--jars选项带来的网络I/O等开销。可以查看官方网站上的配置页,部分相关的配置参见表2.2。
表2.2 CLASS_PATH相关配置项
应用提交案例:
其中:
1)test.HelloSparkMaster为要运行的应用程序类的名称,必须是全路径的。运行Spark提供的example示例代码时,可以直接使用类名,这是因为在spark-shell2.sh脚本文件中已经自动添加了example示例类的全路径前缀”org.apache.Spark.examples.”。
2)spark∶//192.168.70.214∶7077∶MasterURL,如果是提交到Spark Standalone集群的话,该地址信息必须和集群Web Interface界面显示的MasterURL一样。如图2.2所示,该Master会用于akka(一个用Scala编写的库),作为Actor的地址,而该地址与实际使用IP值的Master构成的地址不同,这会导致akka通信失败报错,因此提交时必须保证MasterURL的正确性。
Spark是M/S结构的分布式计算框架,M为Master,S为Slave,其中Master对应于Spark Standalone集群的调度节点。Master URL对应连接到Master时使用的URL。图2.2为Web Interface(http∶//wxx214∶8080/)界面,在该界面查看正确的MasterURL。
图2.2 URL查看界面
MasterURL中的host信息不支持IP与hostname互换,即当界面显示如图2.2时,如果使用hostname对应的MasterURL,比如以Spark∶//wxx214∶7077作为MasterURL进行提交的话,可能会报如下连接失败的错误:
3)/toPath/testprojectide_2.10-1.0.jar∶应用程序类所在的jar包路径。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。