前提:确保Zookeeper和HDFS均已经启动
node1启动HADOOP(任意路径输入以下命令)
(base) [root@node1 server]# start-all.sh
三台主机都启动zookeeper(三台主机都需要执行)
(base) [root@node1 server]# cd /export/server/apache-zookeeper-3.5.6-bin
(base) [root@node1 apache-zookeeper-3.5.6-bin]# bin/zkServer.sh start
1、配置文件修改
跳转到配置文件夹:
[root@node1 zookeeper-3.4.9]# cd /export/server/spark/conf
[root@node1 conf]# vim spark-env.sh
注释或删除掉下面的语句(前面加#号)
#export SPARK_MASTER_HOST=node1
增加以下内容: SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha" # spark.deploy.recoveryMode 指定HA模式 基于Zookeeper实现 # 指定Zookeeper的连接地址 # 指定在Zookeeper中注册临时节点的路径
2、将spark-env.sh 分发到每一台服务器上
[root@node1 conf]# scp spark-env.sh node2:/export/server/spark/conf/
[root@node1 conf]# scp spark-env.sh node3:/export/server/spark/conf/
3、停止当前StandAlone集群
[root@node1 spark]# cd /export/server/spark
[root@node1 spark]# sbin/stop-all.sh
4、启动集群
# 在node1上 启动一个master 和全部worker
[root@node1 spark]# sbin/start-all.sh# 注意, 下面命令在node2上执行,需要上面的启动后再执行这个
[root@node2 spark]# sbin/start-master.sh
# 在node2上启动一个备用的master进程#启动后node1和node2都会有master和worker进程(node1为主,node2为备)
5、查看主备情况
#注:8080端口没被占用的情况下,页面查看用http://node1:8080/
#需用哪个端口可以通过以下命令查看
(base) [root@node1 spark]# jps
(base) [root@node1 spark]# netstat -anp | grep 27552
问题处理
如果显示node1和node2启动后都是
Status: STANDBY
可以安装更新版的zookeeper解决,安装方法同以下链接