本篇博客,Alice为大家带来的是Spark的HA高可用环境搭建的教程。

Spark环境搭建——HA高可用模式_HA

原理

        Spark Standalone集群是​Master-Slaves​架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着​​Master单点故障​​的问题。

        如何解决这个单点故障的问题,Spark提供了两种方案:

        1.基于文件系统的单点恢复(Single-Node Recovery with Local File System)–只能用于开发或测试环境。

        2.基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)–可以用于生产环境。

Spark环境搭建——HA高可用模式_HA_02

配置HA

        该HA方案使用起来很简单,首先启动一个ZooKeeper集群,然后在不同节点上启动Master,注意这些节点需要具有相同的zookeeper配置。

  • 先停止Sprak集群

​/export/servers/spark/sbin/stop-all.sh​

  • 在node01上配置:

​vim /export/servers/spark/conf/spark-env.sh​

  • 注释掉Master配置

​#export SPARK_MASTER_HOST=node01​

  • 在spark-env.sh添加SPARK_DAEMON_JAVA_OPTS,内容如下:

​export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER​

​-Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181​

​-Dspark.deploy.zookeeper.dir=/spark"​

参数说明:

spark.deploy.recoveryMode:恢复模式
spark.deploy.zookeeper.url:ZooKeeper的Server地址
spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录。包括Worker、Driver、Application信息。
  • scp到其他节点

​scp /export/servers/spark/conf/spark-env.sh​

​node02:/export/servers/spark/conf/​

​scp /export/servers/spark/conf/spark-env.sh​

​node03:/export/servers/spark/conf/​

启动zk集群

​zkServer.sh status​

​zkServer.sh stop​

​zkServer.sh start​

启动Spark集群

  • node01上启动Spark集群执行

​/export/servers/spark/sbin/start-all.sh​

  • 在node02上再单独只起个master:

​/export/servers/spark/sbin/start-master.sh​

  • 注意:

        在普通模式下启动spark集群

        只需要在主节点上执行start-all.sh 就可以了

        在高可用模式下启动spark集群

        先需要在任意一台主节点上执行start-all.sh

        然后在另外一台主节点上单独执行start-master.sh

可以观察到有一台状态为StandBy

Spark环境搭建——HA高可用模式_HA_03

测试HA

        测试主备切换

  1. 在node01上使用jps查看master进程id
  2. 使用kill -9 id号强制结束该进程
  3. 稍等片刻后刷新node02的web界面发现node02为Alive

Spark环境搭建——HA高可用模式_hadoop_04

  • 测试集群模式提交任务

        1.集群模式启动spark-shell

​/export/servers/spark/bin/spark-shell --master spark://node01:7077,node02:7077​

        2.运行程序

sc.textFile("hdfs://node01:8020/wordcount/input/words.txt")
.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
.saveAsTextFile("hdfs://node01:8020/wordcount/output7")

        在hue中查看结果

Spark环境搭建——HA高可用模式_HA_05


        本次的分享就到这里,受益的小伙伴或对大数据技术感兴趣的朋友记得点赞关注Alice哟(^U^)ノ~YO

Spark环境搭建——HA高可用模式_hadoop_06