Spark学习笔记No.03(StandAlone HA与YARN模式)

Spark学习笔记No.03(StandAlone HA与YARN模式)

1、StandAlone HA

Standalone集群存在Master故障(SPOF) 那么如何解决呢?
解决方案:
1.基于文件系统的单点恢复(Single-Node Recovery with Local File System)–只能用于开发或测试环境。2.基于zookeeper的Standby Masters(Standby Masters with ZooKeeper)–可以用于生产环境。

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

1.1 zookeeper

在大型企业的开发中,服务的数量是十分庞大的。如果我们想要添加一个服务的话,那么就需要对文件进行重新覆盖,把整个容器重启。这样导致的结果是就是:波及影响太大,维护十分困难。
此时,便需要一个能够动态注册服务和获取服务信息的地方,来统一管理服务,这个地方便称为称为服务配置中心。而zookeeper不仅实现了对cusumer和provider的灵活管理,平滑过渡功能,而且还内置了负载均衡、主动通知等功能,使我们能够几乎实时的感应到服务的状态。能够很好的帮我们解决分布式相关的问题,至今仍是市面上主流的分布式服务注册中心技术之一。
分布式进程是分布在多个服务器上的, 状态之间的同步需要协调,比如谁是master,谁是worker.谁成了master后要通知worker等, 这些需要中心化协调器Zookeeper来进行状态统一协调

(base) [smith@hadoop103 bin]$ ./zkServer.sh start
1.2 StandAlone HA

杀死进程(jps Master前的数据为61471)

kill -9 61471
1.3 StandAlone HA的原理

基于Zookeeper做状态的维护, 开启多个Master进程, 一个作为活跃,其它的作为备份,当活跃进程宕机,备份Master进行接管

2、Spark on Yarn

Spark on Yarn无需部署Spark,只要找到一个服务器,充当Spark的客户端。

2.1本质

Maste角色由YARN的ResourceManager担任
Worker角色由YARN的NodeManager担任
Driver角色运行在YARN容器里,或者提交任务的客户端进程
真正干活的Executor运行在YARN提供的容器里
在这里插入图片描述

2.2 运用测试
(base) [smith@hadoop103 spark]$ bin/pyspark --master yarn
2.3 两种部署模式

Cluster(集群)模式:Driver运行在YARN容器内部, 和ApplicationMaster在同一个容器内
Client模式:Driver运行在客户端进程中, 比如Driver运行在spark-submit程序的进程中,而ApplicationMaster在容器里
在这里插入图片描述
客户端模式

(base) [smith@hadoop102 spark]$ bin/spark-submit --master yarn --deploy-mode client --derver-memory 512m --executor-momory 256m --num-executors 3 --total-executor-cores 3

集群模式

(base) [smith@hadoop102 spark]$ bin/spark-submit --master yarn --deploy-mode cluster --derver-memory 512m --executor-momory 256m --num-executors 3 --total-executor-cores 3

两者最本质的区别是Driver程序运行在哪里
Client模式:学习测试时使用,生产不推荐(要用也可以,性能略低,稳定性略低)
1.Driver运行在Client上,和集群的通信成本高
2.Driver输出结果会在客户端显示

Cluster模式:生产环境中使用该模式
1.Driver程序在YARN集群中,和集群的通信成本低
2.Driver输出结果不能在客户端显示
3.该模式下Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题, yarn会重启ApplicattionMaster(Driver)

2.3.1 Client模式

在这里插入图片描述

具体流程步骤如下:
1、Driver在任务提交的本地机器上运行, Driver启动后会和ResourceManager通讯申请启动ApplicationMaster ; 2、随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存;
3、 ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程;
4、Executor进程启动后会向Driver反向注册, Executor全部注册完成后Driver开始执行main函数;
5、之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分Stage,每个Stage生成对应的TaskSet,之后将Task分发到各个Executor上执行。

2.3.2Cluster模式

在这里插入图片描述
具体流程步骤如下:
1、任务提交后会和ResourceManager通讯申请启动ApplicationMaster;
2、随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver;
3、 Driver启动后向ResourceManager申请Executor内存, ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后在合适的NodeManager上启动Executor进程;
4、Executor进程启动后会向Driver反向注册;
5、Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行;

2.4 总结回顾

Spark On Yarn的本质
Master由ResourceManager代替
Worker由NodeManager代替
Driver可以运行在容器内(Cluster模式)或客户端进程中(Client模式)
Executor全部运行在YARN提供的容器内
Why Spark On Yarn?
提高资源利用率,在已有YARN的场景下让Spark场景下让Spark收到YARN的调度,可以更好地管控资源,提供利用率并且方便管理。

3、PySpark

PySpark是一个python的类库,可以提供Spark的操作API
bin/pyspark是一个交互式的程序,可以提供交互式编程并执行Spark计算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值