实验十三 Spark实验:部署Spark集群

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Will_cruise/article/details/88963721

实验指导:

13.1 实验目的

能够理解Spark存在的原因,了解Spark的生态圈,理解Spark体系架构并理解Spark计算模型。学会部署Spark集群并启动Spark集群,能够配置Spark集群使用HDFS。

13.2 实验要求

要求实验结束时,每位学生均已构建出以Spark集群:master上部署主服务Master;slave1、2、3上部署从服务Worker;client上部署Spark客户端。待集群搭建好后,还需在client上进行下述操作:提交并运行Spark示例代码WordCount,将client上某文件上传至HDFS里刚才新建的目录。

13.3 实验原理

13.3.1 Spark简介

Spark是一个高速的通用型集群计算框架,其内部内嵌了一个用于执行DAG(有向无环图)的工作流引擎,能够将DAG类型的Spark-App拆分成Task序列并在底层框架上运行。在程序接口层,Spark为当前主流语言都提供了编程接口,如用户可以使用Scala、Java、Python、R等高级语言直接编写Spark-App。此外,在核心层之上,Spark还提供了诸如SQL、Mllib、GraphX、Streaming等专用组件,这些组件内置了大量专用算法,充分利用这些组件,能够大大加快Spark-App开发进度。

一般称Spark Core为Spark,Spark Core处于存储层和高层组建层之间,定位为计算引擎,核心功能是并行化执行用户提交的DAG型Spark-App。目前,Spark生态圈主要包括Spark Core和基于Spark Core的独立组件(SQL、Streaming、Mllib和Graphx)。

13.3.2 Spark适用场景

(1)Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。

(2)由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。

(3)数据量不是特别大,但是要求实时统计分析需求。

13.4 实验内容和步骤

13.4.1 配置Spark集群

配置Spark集群(独立模式):

前提:1、请自行配置各节点之间的免密登录,并在/etc/hosts中写好hostname与IP的对应,这样方便配置文件的相互拷贝。2、因为下面实验涉及Spark集群使用HDFS,所以按照之前的实验预先部署好HDFS。

在master机上操作:确定存在spark。

[root@master ~]# ls /usr/cstor
spark/
[root@master ~]#

在master机上操作:进入/usr/cstor目录中。

[root@master ~]# cd /usr/cstor
[root@master cstor]#

进入配置文件目录/usr/cstor/spark/conf, 先拷贝并修改slave.templae为slave。

[root@master ~]# cd /usr/cstor/spark/conf
[root@master cstor]# cp  slaves.template slaves

然后用vim命令编辑器编辑slaves文件

[root@master cstor]# vim slaves

编辑slaves文件将下述内容添加到slaves文件中。

slave1
slave2
slave3

上述内容表示当前的Spark集群共有三台slave机,这三台机器的机器名称分别是slave1~3。

在spark-conf.sh中加入JAVA_HOME。

[root@master cstor]# vim /usr/cstor/spark/sbin/spark-config.sh

加入以下内容

export JAVA_HOME=/usr/local/jdk1.7.0_79

将配置好的Spark拷贝至slaveX、client。(machines在目录/root/data/2下,如果不存在则自己新建一个)

使用for循环语句完成多机拷贝。

[root@master ~]# cd /root/data/2
[root@master ~]# cat  machines
slave1
slave2
slave3
client
[root@master ~]# for  x  in  `cat  machines` ; do  echo  $x ; scp  -r  /usr/cstor/spark/  $x:/usr/cstor/; done;

在master机上操作:启动Spark集群。

[root@master local]# /usr/cstor/spark/sbin/start-all.sh

13.4.2 配置HDFS

配置Spark集群使用HDFS:

首先关闭集群(在master上执行)

[root@master ~]# /usr/cstor/spark/sbin/stop-all.sh

将Spark环境变量模板复制成环境变量文件。

[root@master ~]# cd /usr/cstor/spark/conf
[root@master conf]# cp spark-env.sh.template spark-env.sh

修改Spark环境变量配置文件spark-env.sh。

[root@master conf]$ vim spark-env.sh

在sprak-env.sh配置文件中添加下列内容。

export HADOOP_CONF_DIR=/usr/cstor/hadoop/etc/hadoop

重新启动spark

[root@master local]# /usr/cstor/spark/sbin/start-all.sh

13.4.3 提交Spark任务

在client机上操作:使用Shell命令向Spark集群提交Spark-App

(1)上传in.txt文件到HDFS(hdfs://master:8020/user/spark/in/)上。

in.txt文件在/root/data/13/目录下。

请大家参照实验一自行完成。

(2)提交wordcount 示例代码。

进入/usr/cstor/spark目录,执行如下命令:

[root@master local]# cd /usr/cstor/spark
[root@client spark]# bin/spark-submit --master spark://master:7077 \
--class org.apache.spark.examples.JavaWordCount \
lib/spark-examples-1.6.0-hadoop2.6.0.jar hdfs://master:8020/user/spark/in/in.txt

13.5 实验结果

13.5.1 进程查看

在master和slave1-3上分别执行jps命令查看对应进程。master中进程为Master,slave机进程为Worker。如图13-1所示:

图13-1

13.5.2 验证WebUI

在本地(需开启OpenVPN)浏览器中输入master的IP和端口号8080(例:10.1.89.5:8080),即可看到Spark的WebUI。此页面包含了Spark集群主节点、从节点等各类统计信息。如图13-2所示:

图13-2 Spark界面

13.5.3 SparkWordcount程序执行

输入:in.txt(数据放在/root/date/13目录下)。

hello world
ni hao
hello my friend
ni are my sunshine

输出结果如图13-3所示

图13-3

WebUI中Application的详细信息如图13-4所示。

图13-4

实验操作:

步骤1:配置集群ssh免密

步骤2:修改Spark独立模式配置

在master机上操作:确定存在spark。

[root@master ~]# ls /usr/cstor
spark/
[root@master ~]#

在master机上操作:进入/usr/cstor目录中。

[root@master ~]# cd /usr/cstor
[root@master cstor]#

进入配置文件目录/usr/cstor/spark/conf, 先拷贝并修改slave.templae为slave。

[root@master ~]# cd /usr/cstor/spark/conf
[root@master cstor]# cp  slaves.template slaves

然后用vim命令编辑器编辑slaves文件

[root@master cstor]# vim slaves

编辑slaves文件将下述内容添加到slaves文件中。

slave1
slave2
slave3

上述内容表示当前的Spark集群共有三台slave机,这三台机器的机器名称分别是slave1~3。

在spark-conf.sh中加入JAVA_HOME。

[root@master cstor]# vim /usr/cstor/spark/sbin/spark-config.sh

加入以下内容

export JAVA_HOME=/usr/local/jdk1.7.0_79

将配置好的Spark拷贝至slaveX、client。(machines在目录/root/data/2下,如果不存在则自己新建一个)

使用for循环语句完成多机拷贝。

[root@master ~]# cd /root/data/2
[root@master ~]# cat  machines
slave1
slave2
slave3
client
[root@master ~]# for  x  in  `cat  machines` ; do  echo  $x ; scp  -r  /usr/cstor/spark/  $x:/usr/cstor/; done;

步骤3:启动Spark独立模式

步骤4:修改HDFS配置

首先关闭集群(在master上执行)

[root@master ~]# /usr/cstor/spark/sbin/stop-all.sh

将Spark环境变量模板复制成环境变量文件。

[root@master ~]# cd /usr/cstor/spark/conf
[root@master conf]# cp spark-env.sh.template spark-env.sh

修改Spark环境变量配置文件spark-env.sh。

[root@master conf]$ vim spark-env.sh

在sprak-env.sh配置文件中添加下列内容。

export HADOOP_CONF_DIR=/usr/cstor/hadoop/etc/hadoop

重新启动spark

[root@master local]# /usr/cstor/spark/sbin/start-all.sh

步骤5:启动HDFS

步骤6:设置Spark使用HDFS

步骤7:重新启动Spark

步骤8:上传数据文件至HDFS

步骤9:提交Spark任务

步骤10:查看运行结果

猜你喜欢

转载自blog.csdn.net/Will_cruise/article/details/88963721
今日推荐