Spark高可用集群搭建

Spark

Spark 是一个开源的类似于 Hadoop MapReduce 的通用的并行计算框架, Spark基于 map reduce 算法实现的分布式计算, 拥有Hadoop MapReduce 所具有的优点; 但不同于 MapReduce 的是Spark 中的 Job 中间输出和结果可以保存在内存中,从而不再需要读写 HDFS, 因此 Spark 能更好地适用于数据挖掘与机器学习等需
要迭代的 map reduce 的算法。
Spark 是 MapReduce 的替代方案, 而且兼容 HDFS、 Hive, 可融入 Hadoop 的生态系统, 以弥补 MapReduce 的不足。

搭建Spark高可用集群

Spark Standalone 集群是 Master-Slaves 架构的集群模式, 和大部分的Master-Slaves 结构集群一样, 存在着 Master 单点故障的问题。 Spark 提供了两种解决方案:

  1. 基 于 文 件 系 统 的 单 点 恢 复 (Single-Node Recovery with Local FileSystem)
    主要用于开发或测试环境。 spark 提供目录保存 spark Application和 worker 的注册信息, 并将他们的恢复状态写入该目录中,一旦 Master发生故障, 就可以通过重新启动Master 进程恢复已运行的 spark Application 和 worker 的注册信息。
  2. 基于 zookeeper 的 Standby Masters(Standby Masters with ZooKeeper)
    用于生产模式。 其基本原理是通过 Zookeeper 来选举一个 Master,其他的 Master 处于 Standby 状态。将 spark 集群连接到同一个 ZooKeeper 实例并启动多个 Master,利用 Zookeeper 提供的选举和状态保存功能,可以使一个 Master被选举成活着的 master,而其他 Master 处于 Standby 状态。 如果现任 Master死去, 另一个 Master 会通过选举产生, 并恢复到旧的 Master 状态, 然后恢复调度。 整个恢复过程可能要 1-2 分钟
基于Zookeeper的Spark HA高可用集群部署

在三台主机上搭建集群node1,node2,node3
此方案依赖于ZooKeeper集群(默认已经部署)

1.上传解压安装包

下载地址: http://spark.apache.org/downloads.html

tar zxvf spark-2.0.2-bin-hadoop2.7.tgz -C /export/server

重命名

mv spark-2.0.2-bin-hadoop2.7/ spark

2.修改配置文件

进入Spark的conf目录下

  • 修改 spark-env.sh

    cp spark-env.sh.template spark-env.sh

    添加内容

    # 配置JAVA_HOME
    export JAVA_HOME=/export/server/jdk1.8.0_181
    # 指定master端口
    export SPARK_MASTER_PORT=7077
    # spark.deploy.recoveryMode:恢复模式(Master重新启动的模式)有三种: (1)ZooKeeper (2) FileSystem (3)NONE
    # spark.deploy.zookeeper.url:ZooKeeper的Server地址
    # spark.deploy.zookeeper.dir:保存集群元数据信息的文件、目录,包括 Worker, Driver 和 Application
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181  -Dspark.deploy.zookeeper.dir=/spark"
    # 指定hadoop集群配置文件
    export HADOOP_CONF_DIR=/export/server/hadoop-2.7.4/etc/hadoop
    
  • 修改slaves

    cp slaves.template slaves

    修改内容
    删除localhost
    添加:

    node2
    node3
    
3.拷贝到其他主机

scp -r spark/ root@node2:/export/server/
scp -r spark/ root@node3:/export/server/

4.添加环境变量(所有主机)

vi /etc/profile

# set Spark env
export SPARK_HOME=/export/server/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

source /etc/profile

启动

先启动zookeeper集群
在node1上:

sbin/start-all.sh

在node2上另一个master:

sbin/start-master.sh

查看进程:

[root@node1 spark]# jps
30353 QuorumPeerMain
30889 Jps
30665 Master
[root@node2 spark]# jps
4480 QuorumPeerMain
4871 Jps
4760 Master
4537 Worker
[root@node3 ~]# jps
4481 QuorumPeerMain
4531 Worker
4748 Jps

通过 http://node1:8080http://node2:8080 分别访问web页面查看两个Master的状态
在这里插入图片描述
在这里插入图片描述
可以发现:
node1 --> Status: ALIVE
node2 --> Status: STANDBY

测试:
通过kill -9命令杀死node1上的master进程

kill -9 30665

刷新web页面查看
在这里插入图片描述
在这里插入图片描述
可以发现:
node1 的页面无法访问
node2 的状态发生改变 Status: ALIVE (状态改变可能需要1-2分钟)

再次启动node1上的master

sbin/start-master.sh

刷新web页面可以发现
node1的页面可以访问了, 并且状态是 STANDBY

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值