人生就像赛跑,不在乎你是否第一个到达尽头,而在乎你有没有跑完全程。
Spark于2009年诞生于美国加州大学伯克利分校的AMP实验室,它是一个可应用于大规模数据处理的统一分析引擎。Spark不仅计算速度快,而且内置了丰富的API,使得我们能够更加容易编写程序。
请参考《Hadoop大数据技术与应用》完成Hadoop集群构建。或者看我之前的博客也行。
搭建Spark环境是开展Spark编程的基础,在深入学习Spark编程之 前,我们需要的先搭建Spark开发环境。
由于Spark仅仅是一种计算框架,不负责数据的存储和管理,因此,通常都会将Spark和Hadoop进行统一部署,由Hadoop中的HDFS、HBase等组件负责数据的存储管理,Spark负责数据计算。
安装Spark集群前,需要安装Hadoop环境,本教材采用如下配置环境。
Linux系统:CentOS_6.7版本
Hadoop:2.7.4版本
JDK:1.8版本
Spark:2.3.2版本
Spark部署模式分为Local模式(本地单机模式)和集群模式,在Local模式下, 常用于本地开发程序与测试,而集群模式又分为Standalone模式(集群单机模式)、 Yarn模式和Mesos模式,关于这三种集群模式的相关介绍具体如下:
Standalone模式
Mesos模式
Yarn模式
Yarn模式又分为Yarn Cluster模式和Yarn Client模式,具体介绍如下:
进入后来到Spark的官网,点击【Download】就可以打开下载界面:https://spark.apache.org/downloads.html。
Spark安装包的下载页面如下图所示:
可以将页面向下拉,找到【Spark release archives】点击进去找历史版本下载。
$ tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/
注:命令前面的 $ 符号表示当前用户的命令行提示符。它通常出现在命令的开头,表示这是一条需要在命令行中运行的命令。执行命令时不需要加上这个符号,否则会报错。
为了便于后面操作,我们使用mv命令将Spark的目录重命名为spark,命令如下。
mv spark-2.3.2-bin-hadoop2.7/ spark
cp spark-env.sh.template spark-env.sh
(2)修改spark-env.sh文件,在该文件添加以下内容:
#配置java环境变量
export JAVA_HOME=/export/servers/jdk
#指定Master的IP
export SPARK_MASTER_HOST=hadoop01
#指定Master的端口
export SPARK_MASTER_PORT=7077
上述添加的配置参数主要包括JDK环境变量、Master节点的IP地址和Master端口号,由于当前节点服务器已经在/etc/hosts文件中配置了IP和主机名的映射关系,因此可以直接填写主机名。
(3)复制slaves.template文件,并重命名为slaves 。具体命令如下。
cp slaves.template slaves
(4)修改spark-env.sh文件,在该文件添加以下内容:通过“vi slaves
”命令编辑slaves配置文件,主要是指定Spark集群中的从节点IP,由于在hosts文件中已经配置了IP和主机名的映射关系,因此直接使用主机名代替IP,添加内容如下。
hadoop02
hadoop03
$ scp -r /export/servers/spark/ hadoop02:/export/servers/
$ scp -r /export/servers/spark/ hadoop03:/export/servers/
为了在任何路径下可以执行Spark脚本程序,可以通过执行“vi /etc/profile
’命令编辑 .bashrc或者 profile文件,并在文件中配置Spark环境变量即可。文件中添加以下内容:
export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin
至此,Spark集群配置完成了 。
$ sbin/start-all.sh
Spark Standalone集群是主从架构的集群模式,由于存在单点故障问题,解决这个问题需要用到Zookeeper服务,其基本原理是将Standalone集群连接到同一个Zookeeper实例并启动多个Master节点,利用Zookeeper提供的选举和状态保存功能,可以使一台Master节点被选举,另一台Master节点处于Standby状态。当活跃的Master发生故障时,Standby状态的Master就会被激活,恢复集群调度,整个恢复的过程可能需要1-2分钟。
1.启动Zookeeper集群服务。命令如下:
zkServer.sh start
Zookeeper集群服务之前已经带着同学们搭建过了,还不会或者还没搭建的同学去看看之前的文章。
下面是Zookeeper的核心配置文件zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/export/data/zookeeper /zkdata
clientPort=2181
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
2.在spark-env.sh配置文件中注释Master节点的配置参数,并指定Spark使用Zookeeper管理。
#指定Master的IP
#export SPARK_MASTER_HOST=hadoop01
#指定Master的端口
export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181
-Dspark.deploy.zookeeper.dir=/spark"
关于上述参数的具体说明如下所示:
配置完成后,将spark-env.sh分发至hadoop02、hadoop03节点上,保证配置文件统一,命令如下。
scp spark-env.sh hadoop02:/ekport/servers/spark/conf
scp spark-env.sh hadoop03:/export/servers/spark/conf
3.在hadoop01主节点启动Spark集群,在hadoop02节点再次启动Master服务。
在hadoop01主节点使用—键启动脚本启动,命令如下:
/export/servers/spark/sbin/start-all.sh
在hadoop02节点再次启动Master服务,命令如下:
/export/servers/spark/sbin/start-master.sh
启动成功后,通过浏览器访问http://hadoop02:8080,查看备用Master节点状态,可以发现status状态为STANDBY。主节点status状态为ALIVE。
4.关闭hadoop01节点中的Master进程,测试Spark HA集群。
Spark HA集群启动完毕后,为了演示是否解决了单点故障问题,可以关闭在hadoopo1节点中的Master进程,用来模拟在生产环境中hadoop01突然宕机,命令如下所示。
/export/servers/spark/sbin/stop-master.sh
执行命令后,通过浏览器查看http://hadoop01:8080,发现已经无法通过hadoop001节点访问Spark集群管理界面。大约经过1-2分钟后,刷新 http://hadoop02:8080页面,可以发现hadoop02节点中的Status值更改为ALIVE,Spark集群恢复正常,说明Spark HA配置有效解决了单点故障问题。
vi start_zk.sh
创建start_zk.sh文件,内容如下:#!/bin/sh
for host in hadoop01 hadoop02 hadoop03
do
ssh $host "source /etc/profile;zkServer.sh start"
echo "$host zk is running"
done
执行该文件只需要输入"start_zk.sh
" 即可启动集群中的Zookeeper服务。
转载自:https://blog.csdn.net/u014727709/article/details/132130729
欢迎start,欢迎评论,欢迎指正