本文中的Spark集群包含三个节点,分别是Master,Worker1,Worker2。shell
一、在Master机器上安装Zookeeper,本文安装在/usr/etc目录下浏览器
二、在Master机器配置Zookeeperoop
2.一、cp /usr/etc/zookeeper-3.4.10/conf/zoo_sample.cfg /usr/etc/zookeeper-3.4.10/conf/zoo.cfg
2.二、在安装目录下建立data,logs目录:mkdir data;mkdir logs;
2.三、vi /usr/etc/zookeeper-3.4.10/conf/zoo.cfg,增长内容以下:测试
dataDir=/usr/etc/zookeeper-3.4.10/data dataLogDir=/usr/etc/zookeeper-3.4.10/logs server.0=Master:2888:3888 server.1=Worker1:2888:3888 server.2=Worker2:2888:3888
2.四、在建立的data目录下建立myid文件,并修改内容为0(对应配置中的server.0)url
三、拷贝安装文件到Worker1,Worker2机器spa
scp -r /usr/etc/zookeeper-3.4.10 root@Worker1:/usr/etc/zookeeper-3.4.10 scp -r /usr/etc/zookeeper-3.4.10 root@Worker2:/usr/etc/zookeeper-3.4.10
3.一、修改data目录下的myid文件,Worker1上的内容为1,Worker2上的内容为2。日志
四、在Master、Worker一、Worker2上配置系统环境变量:code
vi /etc/profile 增长Zookeeper内容: exprot ZOOKEEPER_HOME=/usr/etc/zookeeper-3.4.10 PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
五、在Master、Worker一、Worker2上运行Zookeeperserver
./bin/zkServer.sh start
运行./bin/zkServer.sh status查看运行状态,若有问题可经过安装目录下的zookeeper.out日志文件排查。
成功后,运行jps,可看到QuorumPeerMain进程blog
六、配置Spark
vi /usr/etc/spark-2.3.0-bin-hadoop2.7/conf/spark-evn.sh
修改内容以下:
#export SPARK_MASTER_IP=Master #注释掉该行,Spark本身管理集群的状态
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark" #经过Zookeeper管理集群状态
七、测试Spark集群工做状态
7.一、启动集群
在Master启动hdfs:start-dfs.sh
在Master启动spark:/usr/etc/spark-2.3.0-bin-hadoop2.7/sbin/start-all.sh
在Worker1,Worker2分别启动spark-master:/usr/etc/spark-2.3.0-bin-hadoop2.7/sbin/start-master.sh
在Master经过浏览器访问Master:8080,Worker1:8080,Worker2:8080,Spark Master的运行状态在Master上是 ALIVE,在Worker1,Worker2上是STANDBY
7.二、测试Master节点出故障的状况 7.2.一、在任意节点上运行spark-shell:/usr/etc/spark-2.3.0-bin-hadoop2.7/bin/spark-shell --master spark://Master:7077,Worker1:7077,Worker2:7077 7.2.二、在Master上运行/usr/etc/spark-2.3.0-bin-hadoop2.7/sbin/stop-master.sh中止Master服务,发现spark-shell控制台输出如下内容:Connection to Master:7077 failed; waiting for master to reconnect...,过一会经过浏览器访问Worker1:8080,发现此时Worker1机器上Spark Master的状态已经变成了ALIVE。