Spark学习(二)Spark集群的搭建

一、Spark集群的四种运行模式

1、Local
单机运行,一般用于开发测试。
2、Yarn
Spark客户端直接连接Yarn,不需要额外构建Spark集群。
3、Standalone
构建一个由Master+Worker构成的Spark集群,Spark运行在集群中。
4、Mesos
Spark客户端直接连接Mesos,不需要额外构建Spark集群。

二、基于Standalone的Spark集群搭建

1、在node01节点解压spark-1.6.3-bin-hadoop2.6.tgz安装包

tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz

2、为了防止spark中的start-all.sh与HDFS中的命令冲突,需要将spark安装包下sbin目录中的start-all.sh修改为start-1.6.3.sh

mv start-all.sh start-1.6.3.sh

3、配置环境变量

export SPARK_HOME=/opt/software/spark-1.6.3
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin

4、在conf目录下分别修改slave.templateslavespark-env.templatespark-env.sh

mv slave.template slave

mv spark-env.template spark-env.sh

5、配置slave文件,确定Worker所在的节点

node02
node03
node04

6、配置spark-env.sh文件

#主节点的IP
SPARK_MASTER_IP=7077
#主节点的端口号,用来与worker通信
SPARK_MASTER_PORT=node01
#每一个worker进程所能管理的核数
SPARK_WORKER_CORES=3
#每一个worker进程所能管理的内存数
SPARK_WORKER_MEMORY=2G
#每个节点启动worker的实例数
SPARK_WORKER_INSTANCES=1
#worker的工作目录区
SPARK_WORKER_DIR=自定义的目录

注意:

  1. 如果CPU是4核8线程,那么这个核是支持超线程的核。
  2. 如果是普通的核,一个核在一个时刻只能处理一个线程。
  3. 如果节点有8个core,并且支持超线程,此时可以将这个节点看成由16个core组成。

7、将配置好的spark安装包发送到各个节点上

scp -r spark-1.6.3 root@node2:`pwd`
scp -r spark-1.6.3 root@node3:`pwd`
scp -r spark-1.6.3 root@node4:`pwd`

8、启动Spark

start-1.6.3.sh

spark界面如下:
在这里插入图片描述
9、提交Application到集群中,显示如下监控页面
在这里插入图片描述
10、计算结果如下
在这里插入图片描述
监控页面变化
在这里插入图片描述
至此,基于standalone的spark集群搭建完成。

三、Standalone基于zookeeper的高可用Spark集群搭建

1、Spark HA主备切换的过程

在这里插入图片描述

  1. 客户端提交一个AApplication,Master中会存储各个Worker的信息,WaitingApps、WaitingDrivers等信息。
  2. 为了防止Master发生单点故障,丢失元数据,Master会将这些信息同步至zookeeper的小型文件系统的目录中。
  3. 一旦Master挂掉,zookeeper会选取备用Master继续任务。
  4. 备用Master会去zookeeper的文件系统中拉取元数据,然后基于根据拉来的worker信息去通知worker易主,此后worker会给备用Master返回心跳。

2、搭建Spark HA

1、切换至/opt/software/spark/spark-1.6.3/conf/目录下,在spark集群的基础上修改spark-env.sh配置文件

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

解释:

  1. Dspark.deploy.recoveryMode=ZOOKEEPER代表Spark HA是基于zookeeper。
  2. Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181代表zookeeper集群在哪个节点启动zookeeper集群在哪个节点启动**
  3. Dspark.deploy.zookeeper.dir=/spark-1106zookeeper内部的小型文件系统的目录

2、spark-env.sh分别发送给node02、node03、node04节点上。
注意:要将node02的SPARK_MASTER_IP修改为node02,因为要在node02上启动备用Master。
3、在node02、node03、node04节点启动zookeeper

zkServer.sh start

4、在node01节点上启动Spark

start-1.6.3.sh 

5、在node02上启动Master

start-master.sh

查看监控页面,node01对应的Master是ALIVE状态
在这里插入图片描述
node02对应Master是STANDBY状态
在这里插入图片描述

3、测试Spark HA:

为了测试Master是否可以主备切换,现将node01的Master进程kill,然后观察备用Master是否切换为ALIVE。
node01进程
node02进程
此时Spark监控页面node02状态切换至ALIVE状态,说明主备切换完成。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42825815/article/details/84071702