首页 理论教育 应用程序的部署方式优化方案

应用程序的部署方式优化方案

时间:2023-06-25 理论教育 版权反馈
【摘要】:部署Spark应用程序的两种方式分别为:交互式的方式和提交应用的方式。在不同的应用场景下,可以选择不同的部署方式。表2.2 CLASS_PATH相关配置项应用提交案例:其中:1)test.HelloSparkMaster为要运行的应用程序类的名称,必须是全路径的。

应用程序的部署方式优化方案

部署Spark应用程序的两种方式分别为:交互式的方式和提交应用的方式。

在不同的应用场景下,可以选择不同的部署方式。一般来说,在开发调试的场景下,往往选择交互式方式来部署应用;而在需要向集群提交应用的场景时,就应该选择提交应用方式了。

Spark为这两种部署方式提供了对应的工具——交互式工具spark-shell和应用程序部署工具spark-submit。其中,spark-shell是一个应用程序,因为spark-shell在启动的时候创建了SparkContext对象,其名称为sc。这两种部署方式基本上可以运行在各种集群部署上。

使用这两种方式部署应用程序时,需要根据不同需求设置不同的使用方法及其命令选项参数,下面分别描述两种方式下的命令使用方法以及命令选项设置。

一、交互方式部署Spark应用程序

在单机模式下使用Spark Shell交互工具部署Spark应用程序,是初学者开始代码实践的最简单的、最快捷的方法。在集群模式下,也可以通过Spark Shell交互工具让开发者更方便地调试代码。

在Spark集群部署主目录下,输入:

978-7-111-51909-6-Chapter02-4.jpg

可得:

978-7-111-51909-6-Chapter02-5.jpg

978-7-111-51909-6-Chapter02-6.jpg

如果查看交互式工具spark-shell的代码的话,可以看到其命令选项的帮助信息是通过调用spark-submit--help来获取的,因此其参数和spark-submit是一样的。

二、提交应用方式部署Spark应用程序

采用提交应用的方式部署Spark应用程序时,应用程序使用提交脚本进行部署:$Spark_HOME/bin/spark-submit。提交部署时,应根据具体的集群模式,配置相应的选项参数。可通过在Spark集群部署的主目录下,输入以下命令查询相应的配置参数:

978-7-111-51909-6-Chapter02-7.jpg

应用程序部署工具spark-submit的用法如下:

978-7-111-51909-6-Chapter02-8.jpg(www.xing528.com)

978-7-111-51909-6-Chapter02-9.jpg

命令行选项可以在提交时动态修改配置属性,如果配置属性是常用的话,可以放置在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相关配置项

978-7-111-51909-6-Chapter02-10.jpg

应用提交案例:

978-7-111-51909-6-Chapter02-11.jpg

其中:

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。

978-7-111-51909-6-Chapter02-12.jpg

图2.2 URL查看界面

MasterURL中的host信息不支持IP与hostname互换,即当界面显示如图2.2时,如果使用hostname对应的MasterURL,比如以Spark∶//wxx214∶7077作为MasterURL进行提交的话,可能会报如下连接失败的错误

978-7-111-51909-6-Chapter02-13.jpg

3)/toPath/testprojectide_2.10-1.0.jar∶应用程序类所在的jar包路径。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈