Apache Spark standalone-HA高可用模式

spark standalone-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)–可以用于生产环境。
在这里插入图片描述
该HA方案使用起来很简单,首先启动一个ZooKeeper集群,然后在不同节点上启动Master,注意这些节点需要具有相同的zookeeper配置。

配置standalone-HA

第一步:先停止Sprak集群

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

第二步:在hadoop01上配置:

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到其他节点

cd /export/servers/spark/conf/
scp spark-env.sh hadoop02:$PWD
scp spark-env.sh hadoop03:$PWD

第四步:启动zk集群

zkStart-all.sh

这个是一键启动zk集群的脚本:点击这里获取

第五步:启动Spark集群

  • hadoop01上启动Spark集群执行
/export/servers/spark/sbin/start-all.sh
  • 在hadoop02上再单独只起个master
/export/servers/spark/sbin/start-master.sh
  • 注意:

在普通模式下启动spark集群
只需要在主节点上执行start-all.sh 就可以了

在高可用模式下启动spark集群
先需要在任意一台主节点上执行start-all.sh
然后在另外一台主节点上单独执行start-master.sh

第六步:查看node01和node02

http://hadoop01:8080/
http://hadoop02:8080/
可以观察到有一台状态为StandBy

第七步:测试主备切换

1.在hadoop01上使用jps查看master进程id
2.使用kill -9 id号强制结束该进程
3.稍等片刻后刷新hadoop02的web界面发现hadoop02为Alive
在这里插入图片描述

第八步:测试集群模式提交任务

1.集群模式启动spark-shell

扫描二维码关注公众号,回复: 10461930 查看本文章
/export/servers/spark/bin/spark-shell --master spark://hadoop01:7077,hadoop02:7077

2.运行程序

sc.textFile("hdfs://node01:8020/wordcount/input/words.txt")
.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
.saveAsTextFile("hdfs://node01:8020/wordcount/output3")
发布了295 篇原创文章 · 获赞 184 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42072754/article/details/105284777
今日推荐