Spark集群的搭建

Spark集群的四种模式

1、local
单机运行,一般用于测试
2、yarn
Spark客户端直接连接yarn
3、standalone
spark自带的资源调度器(默认情况下:standalone集群=spark集群)
4、Mesos
Spark客户端直接连接Mesos
运行流程:
Spark Application向资源调度器(yarn,mesos,standalone)申请资源,执行任务调度器,然后分布式运行

搭建Standalone集群

搭建的版本为1.6.3
解压压缩包;

1、配置环境变量

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

2、修改配置文件

#在conf目录下修改两个配置文件
#修改slaves.template,g更名为slaves,配置从节点的Ip
node02
node03
node04
#修改spark-env.sh.template更名spark-env.sh配置一下信息
#主节点的ip
SPARKM_MASTER_IP=node01
#端口号:master与work通信端口
SPARK_MASTER_PORT=7077
#每个work进程所能管理的核数(根据当前节点资源情况配置)
SPARK_WORKER_CORS=3
#每个work进程所能管理的内存
SPARK_WORKER_MEMORY=2g
#worker的工作目录
SPARK_WORKER_DIR=/opt/software/spark/worker
#每个节点上启动的work数
SPARK_WORKER_INSTANCES=1

将配置好的文件,发送到其他节点上,

#pwd表示当前目录 
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`
#启动命令和HDFS的命令冲突
mv stark-all.sh stark-spark.sh
stark-spark.sh

注意:修改spark的启动命令

3、查看监控页面 IP:端口号(8088)

在这里插入图片描述

4、提交Application到集群,

在bin目录下
./spark-submit --master spark://node01:7077 --class org.apache.spark.exmaples.SparkPi ../lib/spark-examples-1.6.3-hadoop2.6.0.jar 100

在这里插入图片描述

计算结果如下图所示:
在这里插入图片描述

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

主备切换机制

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

集群的搭建

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

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

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

将配置文件分别发送到其他节点上
在node02、node03、node04节点上启动zookeeper

附:搭建zookeeper

将zookeeper解压在自定义目录下
修改conf下的zoo_sample.cfg的名称,改为zoo.cf(方便修改)
mv zoo_sample.cfg zoo.cfg
#修改zo.cfg
vi zoo.cfg
#配置文件信息
dataDir=/var/zfg/zookeeper
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888

在dataDir的目录下创建myid文件,在这个文件中写上当前节点id 与server后数字对应(需自己将上面的目录结构创建出来,路径可以自己自定义)。
将配置好的zookeeper安装包拷贝到node03、node04,并且各节点创建myid号,与上面各节点的数字对应。
启动zookeeper
到zookeeper/bin 目录下
分别在三个节点上启动 ./zkServer.sh start
(注:zookeeper要在集群启动前启动)

启动spark

#在node01节点上启动Spark
start-spark.sh 
#在node02上启动Master
start-master.sh

查看监控页面

node01节点
在这里插入图片描述
node02节点
在这里插入图片描述

测试高可用

现将node01的Master进程kill,然后观察备用Master是否切换为ALIVE。
在这里插入图片描述
在这里插入图片描述

问题思考

1、master的主备切换过程中需要做哪些工作

备用的master先去zookeeper中下载元数据,通过worker集合中的数据向每一个worker发消息,告知主备切换了,如果waitingApps或waitingDrivers里面有数据,就开始继续工作。

2、master主备切换过程,能够提交一个新的Application到集群中运行呢?

不能,主备切换,之前正在工作的master已经不能工作了,接管过来的master现在处于RECOVER,还不能工作

3、如果有一个Application在集群中已经运行了,那么主备切换过程对这个正在运行的Application有没有影响?

没有影响,Spark是粗粒度的资源调度,任务在运行之前已经找好master申请好资源了,没有master的事了
至此spark的搭建就完成啦~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值