Spark2.2.1高可用集群搭建

集群规划:

   主机名 IP    安装的软件 运行的进程
   win4   192.168.2.104 jdk1.8、spark2.2.1、zookeeper3.4.11 Worker、QuorumPeerMain
   win5   192.168.2.105 jdk1.8、spark2.2.1、zookeeper3.4.11 Worker、QuorumPeerMain
   win6   192.168.2.106 jdk1.8、spark2.2.1、zookeeper3.4.11 Worker、QuorumPeerMain
   win7   192.168.2.107 jdk1.8、spark2.2.1 Master

   win8   192.168.2.108jdk1.8、spark2.2.1 Master

说明:

spark2.2.1中通常由两个Master组成,一个处于ALIVE状态,另一个处于STANDBY状态。ALIVE Master对外提供服务,
而STANDBY Master则不对外提供服务,仅同步ALIVE Master的状态,以便能够在它失败时快速进行切换。


安装步骤:

1.安装配置zooekeeper集群(在win4上)
1.1解压
tar -zxvf zookeeper-3.4.11.tar.gz -C /home/luguoqi/app/
1.2修改配置
cd /home/luguoqi/app/zookeeper-3.4.11/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/home/luguoqi/app/zookeeper-3.4.11/tmp
在最后添加:(第一个关口是leader与flower通信端口,第二个是选举端口,默认端口2181)
server.1=win4:2888:3888
server.2=win5:2888:3888
server.3=win6:2888:3888
保存退出
然后创建一个tmp文件夹
mkdir /home/luguoqi/app/zookeeper-3.4.11/tmp
再创建一个空文件
touch /home/luguoqi/app/zookeeper-3.4.11/tmp/myid
最后向该文件写入ID
echo 1 > /weekend/zookeeper-3.4.11/tmp/myid
1.3将配置好的zookeeper拷贝到其他节点(首先分别在win5、win6的luguoqi用户下创建app文件夹:mkdir /home/luguoqi/app)
scp -r /home/luguoqi/app/zookeeper-3.4.11/ win5:/home/luguoqi/app/
scp -r /home/luguoqi/app/zookeeper-3.4.11/ win6:/home/luguoqi/app/

注意:修改win5、win6对应/weekend/zookeeper-3.4.11/tmp/myid内容
win5:
echo 2 > /home/luguoqi/app/zookeeper-3.4.11/tmp/myid
win6:
echo 3 > /home/luguoqi/app/zookeeper-3.4.11/tmp/myid

2.安装配置spark集群(在win4上操作)
2.1解压
tar -zxvf spark-2.2.1-bin-hadoop2.7.tgz -C /home/luguoqi/app/
2.2配置spark(spark2.2.1所有的配置文件都在$SPARK_HOME/conf目录下)
#将spark添加到环境变量中
vim /etc/profile
export JAVA_HOME=/home/luguoqi/app/jdk1.8.0_151
export SPARK_HOME=/home/luguoqi/app/spark-2.2.1-bin-hadoop2.7
export PATH=$PATH:$JAVA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin

cd /home/luguoqi/app/spark-2.2.1-bin-hadoop2.7/conf

2.2.1修改slaves(mv slaves.template slaves)文件
win4
win5
win6
export JAVA_HOME=/home/luguoqi/app/jdk1.8.0_151

2.2.2修改spark-env.sh(mv spark-env.sh.template spark-env.sh)文件
export JAVA_HOME=/home/luguoqi/app/jdk1.8.0_151
#export SPARK_MASTER_HOST=win8  非ha配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=win4,win5,win6 -Dspark.deploy.zookeeper.dir=/spark"

2.2.3配置免密码登陆
#我这里配置了所有主机上的免密登录(事实上只需要配置win8->win4、win5、win6。win7->win4、win5、win6免密即可)
#在win8上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点,包括自己
ssh-coyp-id win4
ssh-coyp-id win5
ssh-coyp-id win6


2.4将配置好的spark拷贝到其他节点
scp -r /home/luguoqi/app/spark-2.2.1-bin-hadoop2.7 win5:$PWD
scp -r /home/luguoqi/app/spark-2.2.1-bin-hadoop2.7 win6:$PWD
scp -r /home/luguoqi/app/spark-2.2.1-bin-hadoop2.7 win7:$PWD
scp -r /home/luguoqi/app/spark-2.2.1-bin-hadoop2.7 win8:$PWD

2.5启动zookeeper集群(分别在win4、win5、win6上启动zk)
cd /home/luguoqi/app/zookeeper-3.4.11/bin
./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status

2.6启动spark集群(在win7上执行)
cd /home/app/spark-2.2.1-bin-hadoop2.7/sbin
./start-all.sh
####此时只启动了一个Master(win7)和三个Worker(win4、win5、win6)
启动另一个Master(win8上执行)
cd /home/app/spark-2.2.1-bin-hadoop2.7/sbin
./start-master.sh
到此,spark集群配置完毕,可以统计浏览器访问:
http://192.168.2.107:8080
Spark Master at spark://win7:7077(Status: ALIVE)
http://192.168.2.108:8080
Spark Master at spark://win8:7077(Status: STANDBY)

验证SPARK HA

此时可以使用spqrk-shell客户端连接spark集群
(任意一台主机上执行)
cd /home/app/spark-2.2.1-bin-hadoop2.7/bin
./spark-shell --master spark://win7:7077,win8:7077
或者提交jar包执行测试
./spark-submit --master spark://win7:7077,win8:7077 --executor-memory 512mb --total-executor-cores 4 --class com.win.SaprkWordCount /home/luguoqi/spark-1.0.jar hdfs://win1:9000/wc/input hdfs://win1:9000/wc/output
提交任务 指定Master(多个使用,分割) 每个Worker上使用的内存   每个Worker使用的核数 指定main类 jar包 数据输入目录 输出目录

连接成功,说明集群已经配置完毕。



此时可以测试高可用状态:
在win7(Status: ALIVE)上执行kill -9 pid
然后,在页面查看,发现win8状态已经切换为ALIVE。

你可能感兴趣的:(Spark2.2.1高可用集群搭建)