Spark高可用集群搭建

Spark的安装与部署

Spark的安装部署方式有以下几种模式

  1. Standalone
  2. YARN
  3. Mesos
  4. Amazon EC2

伪分布式部署

配置:conf/spark-env.sh

vim conf/spark-env.sh

# 配置jdk
export JAVA_HOME=/root/training/jdk1.7.0_75

# 指定master
export SPARK_MASTER_HOST=hdp00
export SPARK_MASTER_PORT=7077

配置:conf/slave

vim conf/slave

# 指定worker节点
hdp00

分布式部署

conf/spark-env.sh中配置项和伪分布式配置是一样的,只不过在conf/slave中配置的worker节点不一样而已。

vim conf/slave

# 配置两个worker节点
hdp02
hdp03

启动spark集群

sbin/start-all.sh

Spark的HA

基于文件系统的单点恢复

主要用于开发或测试环境。当spark提供目录保存spark Application和worker的注册信息,并将他们的恢复状态写入该目录中,这时,一旦Master发生故障,就可以通过重新启动Master进程(sbin/start-master.sh),恢复已运行的spark Application和worker的注册信息。

基于文件系统的单点恢复,主要是在spark-en.sh里对SPARKDAEMONJAVA_OPTS设置:

spark.deploy.recoveryMode:设置为FILESYSTEM开启单点恢复功能,默认值:NONE

spark.deploy.recoveryDirectory:Spark 保存恢复状态的目录

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/root/training/spark-2.1.0-bin-hadoop2.7/recovery

测试:

1、在hdp00上启动Spark集群

2、在hdp02上启动spark shell
    MASTER=spark://hdp00:7077 spark-shell

3、在hdp00上停止master
    stop-master.sh

4、观察hdp02上的输出

5、sbin/start-master.sh

基于Zookeeper

ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个是Active的,其他的都是Standby。当Active的Master出现故障时,另外的一个Standby Master会被选举出来。由于集群的信息,包括Worker, Driver和Application的信息都已经持久化到ZooKeeper,因此在切换的过程中只会影响新Job的提交,对于正在进行的Job没有任何的影响。加入ZooKeeper的集群整体架构如下图所示。

主要修改配置:conf/spark-env.sh

spark.deploy.recoveryMode 设置为ZOOKEEPER开启单点恢复功能,默认值:NONE

spark.deploy.zookeeper.url ZooKeeper集群的地址

spark.deploy.zookeeper.dir Spark信息在ZK中的保存目录,默认:/spark

# 注释如下两项
#export SPARK_MASTER_HOST=hdp00
#export SPARK_MASTER_PORT=7077  

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp00:2181,hdp02:2181,hdp03:2181 -Dspark.deploy.zookeeper.dir=/spark"

启动spark集群

# 在hdp00上启动集群
sbin/start-all.sh

# 此时也可以在hdp02上再启动一个master
sbin/start-master.sh

在hdp02节点上,此时master节点宕掉,hdp02就会自动切换为master:

原文地址:https://www.cnblogs.com/tianboblog/p/9313743.html