前提条件:(spark HA集群)
1、zookeeper集群服务启动成功(zkServer.sh start )
2、然后启动spark集群服务(并对第二节点进行master启动)
/export/servers/spark/sbin/start-all.sh
1、环境准备
CentOS:6.7
Hadoop:2.7.4 (hadoop-2.7.4.tar.gz),安装好Hadoop集群
JDK:1.8
Spark:2.3.2 (spark-2.3.2-bin-hadoop2.7.tgz ) (默认里面集成了scala-2.11.8的版本)
2、Spark部署方式
Standalone模式(学习阶段时采用)
Yarn模式
Mesos模式
3、Spark集群安装部署
3.1 下载Spark安装包:https://archive.apache.org/dist/spark/spark-2.3.2/
3.2 将Spark安装包上传到主节点hadoop01的/export/software目录下,并解压到/export/servers/目录,命令如
下
tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/
并进行重命名
mv spark-2.3.2-bin-hadoop2.7/ spark
3.3 修改Spark配置文件
3.3.1 修改 spark/config/spark-env.sh (将sprak-env.sh.template配置模板重命名为spark-env.sh),进入到配置
文件的目录,执行:
cp spark-env.sh.template spark-env.sh
并修改spark-env.sh文件,添加相应的内容
export JAVA_HOME=/export/servers/jdk
export SPARK_MASTER_HOST=hadoop01
export SPARK_MASTER_PORT=7077
3.3.2 修改spark的从节点文件slaves,指定集群从节点,并增加内容。代表集群中的从节点为hadoop02和
hadoop03。
复制slaves.template文件,并重命名为slaves
cp slaves.template slaves
增加从级内容
hadoop02
hadoop03
3.4 分发文件配置
将hadoop01的spark目录分发到hadoop02和hadoop03节点,执行命令
scp -r /export/servers/spark/ hadoop02:/export/servers/
scp -r /export/servers/spark/ hadoop03:/export/servers/
至此,Spark集群配置完毕
3.5 启动Spark集群(需要先启动虚拟机,不需要先启动Hadoop集群,但需要先配置好Hadoop集群环境,因为要
用HDFS集群)
启动方式与hadoop类似,直接使用spark目录下sbin目录下的start-all.sh脚本即可,执行命令:
spark/sbin/start-all.sh
注意:如果直接在spark/sbin/目录下执行start-all.sh脚本,则会执行hadoop集群的运行环境(因为start-all.sh命
令默认执行的是hadoop的集群命令)
3.6 查看Spark集群状态,通过UI界面
http://hadoop01:8080/
当前使用Standalone模式,主从架构
存在主机宕机,如何解决,需执行下面的HA集群
4、Spark HA集群部署
Zookeeper:选举和状态保存功能。使主从架构的节点的缺点得到解决:即主节点宕机可以通过zookeeper从选举
得到新的Master,所以搭建一个Zookeeper集群是Spark HA集群部署的前提条件
4.1 Zookeeper安装包的下载与安装
下载地址
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/
上传安装包到haoop01虚拟机 /export/software
解压安装包到指定目录
tar -zxvf zookeeper-3.4.10.tar.gz -C /export/servers/
4.2 zookeeper配置
进入解压目录的conf目录,复制zoo_sample.cfg为zoo.cfg,并进行修改
4.2.1 dataDir=/export/data/zookeeper/
4.2.2 配置三台服务器的映射和端口等(配置zookeeper集群)
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
more zoo.cfg进行查看
4.3 创建myid文件
4.3.1 在hadoop01机器根据zoo.cfg配置文件中的dataDir配置,创建zkdata文件夹
mkdir -p /export/data/zookeeper/zkdata
4.3.2 在zkdata文件夹下创建myid文件,该文件的内容就是服务器编号(hadoop01服务器对应编号1,
hadoop02……),命令如下
cd /export/data/zookeeper/zkdata
echo 1 > myid (创建myid文件并往文件写入1)
4.4 配置环境变量
vi /ect/profile
添加zookeeper的环境变量
export ZK_HOME=/export/servers/zookeeper-3.4.10
export PATH=$ZK_HOME/bin:$PATH
4.5 将配置分发给其他两台服务器,并修改其他两台服务器的myid文件,对应服务器号
在hadoop01机器上执行
scp -r /export/servers/zookeeper-3.4.10/ hadoop02:/export/servers/
scp -r /export/servers/zookeeper-3.4.10/ hadoop03:/export/servers/
scp -r /export/data/zookeeper/ hadoop02:/export/data/
scp -r /export/data/zookeeper/ hadoop03:/export/data/
在hadoop02修改myid文件内容为2
在hadoop03修改myid文件内容为3
scp -r /etc/profile hadoop02:/etc/profile
scp -r /etc/profile hadoop03:/etc/profile
分别在hadoop02,hadoop03 上执行环境变量生效
source /etc/profile
4.6 启动和关闭Zookeeper服务
在三台服务器上分别执行命令脚本
zkServer.sh start/stop
查看启动状态
zkServer.sh status
使用jps命令查看状态
4.7 配置spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -
Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181 -
Dspark.deploy.zookeeper.dir=/spark"
4.8 分发hadoop01的spark配置文件spark-env.sh到hadoop02和hadoop03,hadoop02,hadoop03相应的目
录
scp spark-env.sh hadoop02:/export/servers/spark/conf
scp spark-env.sh hadoop03:/export/servers/spark/conf
4.9 启动Spark HA集群
执行如下的3个命令步骤
(1)zkServer.sh start (分别在三台虚拟机执行)
(2)/export/servers/spark/sbin/start-all.sh (在其中一台虚拟机执行,不能到sbin目录下执行start-all.sh命
令)
hadoop01
hadoop02
hadoop03
(3)在hadoop02上启动master
http://hadoop02:8080
http://hadoop02:8080
4.10 测试Spark HA集群
思路:让hadoop01机器停止master主节点,模拟宕机情况
/export/serers/spark/sbin/stop-master.sh
然后分别查看下hadoop01和hadoop02的spark节点情况
http://hadoop01:8080
http://hadoop02:8080
其他: