Spark集群部署和Job提交思想

Spark集群部署:

1.从Spark Runtime的角度来看,有5大核心对象:Master、Worker、Executor、Driver、CoarseGrainedExecutorBackend。

2.Spark在做分布式集群系统设计的时候,最大化功能独立、模块化封装具体独立的对象、强内聚松耦合。

3.当Driver中的SparkContext初始化的时候,会提交程序给Master,Master如果接受该程序,在Spark中运行的时,就会为当前的程序分配AppID,同时会分配具体的计算资源,Master是根据当前提交的程序的配置信息来给集群中的Worker发指令分配具体的计算资源,但是,Master发出指令后并不关心具体的资源是否已经分配,Master是发指令后就记录了分配的资源,以后客户端再次提交其他的程序就不能使用该资源了。其弊端是可能会导致其他要提交的程序无法分配到本来可以分配到的计算资源,优势是在Spark分布式系统功能弱耦合的基础上最快的运行系统(如果Master要等到资源最终分配成功后才通知Driver的话,就会造成Driver阻塞,不能最大化并行计算资源的使用率)。

Spark在默认情况下由于集群中一般都只有一个Application在运行,所有Master分配资源策略的弊端就没有那么明显了。


Job提交:

1.一个非常重要的技巧是通过在spark-shell中运行一个Job来了解Job提交的过程,然后再用源码验证这个过程。

2.在Spark中所有的Action都会触发一个至少一个Job,比如通过saveAsTextFile可以触发Job。

3.SparkContext在实例化的时候,会构造SparkDeploySchedulerBackend,DAGScheduler、TaskSchedulerImpl、MapOutputTrackerMaster等对象,其中SparkDeploySchedulerBackend负责集群计算资源的管理和调度,DAGScheduler负责高层调度(例如Job中Stage的划分、数据的本地性等内容),TaskSchedulerImpl负责具体Stage内部的底层调度(例如具体每个Task的调度、Task的容错等),MapOutputTrackerMaster负责Shuffle中数据输出和读取的管理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值