转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/84836391
本文出自【我是干勾鱼的博客】
Ingredients:
-
Java:Java SE Development Kit 8u162(Oracle Java Archive),Linux下安装JDK修改环境变量
-
Scala:scala-2.12.7.tgz for Mac OS X, Unix, Cygwin(ALL AVAILABLE VERSIONS),DOWNLOAD
-
Spark:spark-2.4.0.tgz(Spark release archives),Download Apache Spark™
之前在Spark基础学习——Spark概述中介绍了Spark的架构及一些简单的使用实例。目前Spark的Cluster Manager有以下几种:
这里来讲解一下Spark在Standalone环境下的搭建及使用。
1 说明
1.1 关于Standalone
Spark Standalone Mode是用来方便开发、测试时使用的。其实如果想使用最简单的方式部署,那么完全可以在一台服务器上,并且不用部署Hadoop环境,就可以搭建Spark运行环境。
-
扩展一点,Master、Workers可以部署在不同的服务器上。
-
再扩展一点,如果部署了Hadoop环境,那么Workers操作的文件其实是到HDFS上读取,而不是在本地。
1.2 部署环境
这里使用2台服务器环境,并且已经部署好了Hadoop的集群环境:
- 1台Master:test25572
- 1台Worker Node:test7972
Hadoop集群部署可以参考阿里云ECS上搭建Hadoop集群环境——使用两台ECS服务器搭建“Cluster mode”的Hadoop集群环境。
1.3 一个错误
另外在阿里云的ECS服务器部署的Spark,显示日志会出现错误:
ERROR Worker:43 - RECEIVED SIGNAL TERM
这种错误出现后,日志后面的内容显示不出来了,但其实是记录了下来的,需要退出日志,然后再显示出来,不知道这种方式的日志显示是否正常,错误原因还不清楚。
2 使用
部署Standalone环境就是在各个服务器上部署好:
- Java:
/opt/java/jdk1.8.0_162/
- Scala:
/opt/scala/scala-2.12.7
- Hadoop(可选):
/opt/hadoop/hadoop-2.9.1
- Spark:
/opt/spark/spark-2.4.0-bin-hadoop2.7
Spark将文件下载下来直接解压缩到指定目录就可以了。
2.1 启动Master
启动Standalone模式的master:
./sbin/start-master.sh
Master启动之后,将会打印:
spark://HOST:PORT
可以通过它连接Workers,或者向SparkContext传递"master"参数。你也可以通过master的WebUI来找到它,WebUI的默认端口是8080.下面是WebUI中的显示:
2.2 启动Slave的Worker
启动Worker,并将其连接到Master:
./sbin/start-slave.sh <master-spark-URL>
比如,在一台机器上启动Worker,并将其连接到指定URL的Master上:
./sbin/start-slave.sh 39.105.79.72:7077
注意这里需要些IP,而不是阿里云ECS的服务器号。如果想将IP换成阿里云ECS的服务器号,则需要在hosts文件中映射以下。
Worker启动之后之后,在Master的WebUI上就可以看到新的node列表了,刷新:
如图所示:
2.3 关闭Slave的Worker
如果想关闭当前的Worker,则执行:
./sbin/stop-slave.sh
在WebUI中,被关闭的Worker会变成不可点击状态。这时候如果再次重启启动一个Worker,原来关闭的Worker记录会被保留,然后重新出现一个新的Worker变为活跃状态,如图所示:
2.4 关闭Master
关闭Master:
./sbin/stop-master.sh