高可用的Spark集群搭建

1、绪论

  在之前的博客《Spark集群的搭建及测试》已经搭建过Spark集群了,但是这种集群仍有一些弊端。因为之前搭建的集群只有一个Master节点,万一这个节点由于某些原因意外死亡,那么整个集群就瘫痪了。这是我们不愿意看到的,所以我们现在要搭建一个高可用的Spark集群,给Master找一个备用节点。

2、高可用的Spark集群介绍

在这里插入图片描述
  为了加深对高可用的spark集群的理解程度,这里提供几个问题:

  1、spark的主备切换过程需要做哪些工作?
    ①、zookeeper将备用master的状态更改为alive。
    ②、备用master从zookeeper拉取元数据。
    ③、备用master向worker节点发送信息,通知已经更换了master。

  2、master主备切换过程中,能不能提交一个新的Application?
    不能,因为此时旧的master已经挂掉了,而新的master还没准备好(RECOVER)。

  3、如果已经有一个Application已经在集群中运行了,那么此时进行主备切换,对这个Application有没有影响?
没有影响,spark是粗粒度的资源调度,在任务运行之前已经找master为Application申请好资源了,Application运行时已经不需要master了。

3、高可用的Spark集群搭建

  高可用的spark集群与spark集群的搭建很相似,只是修改一个配置文件。所以执行下面的步骤之前,请确保你已经安装了spark集群,若未安装,请按照《Spark集群的搭建及测试》进行搭建。
  由于 高可用的spark集群的主备切换需要依赖zookeeper集群,所以还应该提前安装好zookeeper集群。由于我之前已经安装过,这里就不安装了,贴出以前的链接:《HDFS高可用性的完全分布式搭建过程》,该文章第8步就是zookeeper集群的安装,请自行解决。

  若上面两个上面前提条件都已经解决,接下来可以进行高可用的Spark集群的改造了。

  1、进入spark安装包的conf目录下,修改spark-env.sh文件。
  在这里插入图片描述
  2、在spark-env.sh中修改成下面这种内容。(如果已经搭建好Spark集群,则下面的内容,你应该只需要最后一行,具体情况请自行比对分析)

SPARK_MASTER_IP=node01
SPARK_MASTER_PORT=7077
SPARK_WORKER_CORES=3
SPARK_WORKER_MEMORY=2g
SPARK_WORKER_DIR=/opt/software/spark/spark-1.6.3/work
SPARK_WORKER_INSTANCES=1
SPARK_MASTER_WEBUI_PORT=8888

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 -Dspark.deploy.zookeeper.dir=/spark-1106"

  3、把配置好的spark-env.sh推送到其他节点。使用命令如下:

scp -r spark-env.sh node02:`pwd`
scp -r spark-env.sh node03:`pwd`
scp -r spark-env.sh node04:`pwd`

  4、选择一台节点作为备用master节点,若选择node02,那么在node02节点把SPARK_MASTER_IP的值改为node02。
  5、启动zookeeper,在node02,node03,node04节点分别启动zookeeper。
  在这里插入图片描述
  6、在node01启动spark集群。
在这里插入图片描述
  7、在node02的spark的sbin目录下启动备用master。在这里插入图片描述
  8、在webui查看启动的页面。
在这里插入图片描述
在这里插入图片描述
  9、接下来测试集群是不是高可用的集群。把node01的master杀死,看node02是不是会自动改变状态。
  在这里插入图片描述
  10、node02状态自动切换成功,说明高可用的spark集群配置成功!
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值