Spark集群高可用HA配置

本文中的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。