实验目的:
通过该实验后,能掌握以下知识:
1 能够手动搭建Spark集群
2 能使用Spark Shell
实验说明:
本实验环境中已经配置好Hadoop集群环境和spark on yarn的运行环境,只需要在主服务器(namenode)上执行hdfs namenode -format 格式化命令后启动Hadoop集群。
本次搭建的Spark将使用Hadoop YARN作为集群的资源管理器。所以其需要基于Hadoop集群环境。
实验步骤:
步骤一:启动Hadoop集群
进入到hadoop目录下,执行命令bin/hdfs namenode -format,进行格式化(首次启动需格式化),然后再执行sbin/./start-all.sh启动 Hadoop集群。使用jps命令查看服务。
查看主服务器服务
查看俩个从服务器服务
步骤二:
通过远程传输工具上传spark安装包,并进行解压
注:解压好spark包需在/etc/profile中配置spark环境变量,具体见“笔记”中配置环境变量
步骤三:配置spark集群
首先配置Spark的环境变量文件spark-env.sh,位于Spark安装目录的conf目下。默认没有这个文件,只有spark-env.sh.template,它是配置参考模板。我们将其修改为spark-env.sh,然后编辑spark-env.sh:
增加如下内容(黑色部分),分别是Spark的依赖的JAVA目录,Spark根目录,Hadoop配置目录和Spark本地的数据存储目录,加完后保存(记得改路径及IP)。
这里注意tmp目录可能不存在,需要自己创建
接下指定Spark集群的从节点,通过指定Spark的环境变量文件slaves,它的方式和Hadoop集群一致,但默认不存在这个文件,只有slaves.template。所以同样将其重命名为slaves,编辑slaves:
这里我们将三台服务器都作为子节点,即Worker节点。默认下面有localhost需要将其去掉,然后将三台服务器的host或者各自的IP放进去即可,host参考/etc/hosts文件。这里我们直接放三个host:
接下指定Spark集群的默认配置,通过指定Spark的环境变量文件spark-defaults.conf,位于Spark安装目录下的conf目录下,同样默认不存在这个文件,只有spark-defaults.conf.template。
所以同样将其重命名为spark-defaults.conf,然后编辑spark-defaults.conf:
末尾增加参数,注意IP为主服务器的实际IP,注意替换。
注意:本次配置 *** 作需要在集群的每台机器上全部执行。
可以采用复制的方法
scp -r /opt/module/spark-2.1.0 root@jll02:/opt/module/
步骤四:启动spark
进入主服务器命令行,启动spark之前需要在hdfs文件系统里建立spark的eventLog目录,使用cd命令进入到hadoop目录下,然后在HDFS新建目录/spark/eventLog(此目录路径是在spark-2.1.0/conf/spark-default.conf里配置的)。
在主服务器上,进入到/opt/mudule/spark-2.1.0,启动spark集群服务:
从日志上可以看到启动了三个Worker节点。使用jps命令查看主从服务器的服务:
三台服务器上都启动了了Worker进程,而主服务器上还启动了Master。
至此Spark分布式集群启动完成,如果用户项配置伪分布式Spark也很简单,只要不配置slave,直接start-all.sh即可。
如果用户想关闭Spark集群,直接在主服务器上执行stop-all.sh即可。
步骤五:spark shell
在主服务器上执行,Spark的shell提供了一个学习API的简单方法,也是一个交互式分析数据的强大工具。
启动spark-shell是Scala语言的交互式编程入口。启动很简单,直接执行即可。
可以看到Spark context Web UI available at http://192.168.242.6:4040,表示Spark Shell在启动后会生成一个web服务,用户可以访问地址来查看执行情况:
另外看到master = local[*]字样,表示spark-shell使用的伪分布式,也是只会在单机执行程序。访问上面的web页面,点击Executors,可以发现只有一个驱动程序:
如果不知道使用Spark shell可以参考help:
可以输入简单的1+1,和打印语句检测效果:
退出Spark shell,使用:quit:
下面将以集群的方式启动spark-shell,可以--master参数实现:
可以发现master 不是 local[*]而是spark://172.40.30.201:7077,再次访问Web页面:
可以发现有一个驱动执行器和三个执行器,即1个Master和三个Worker。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)