spark学习-driver和executor调度

1 spark executor进程和work进程以及sparkContex的关系
sparkContext一个资源环境,executor隶属于sparkContext,但executor进程所分配的core资源个数取决于当前主机work的core剩余数。
同一个sparkContext在同一个work进程中只会fork出一个executor进程,利用spark的并行处理思路是采用线程,而非hadoop的进程思路,
既然是并发,无非是一个executor进程中的多个线程而已。起初,我以为单个物理主机只能启动一个隶属于一个sparkContext的executor进
程,其实只要配置好work instance参数,单个主机启动多个work实例,从而启动多个executor,这样的模式在异构集群中适用。


2 单个app占用core配置
spark.cores.max 决定一个应用所能获取的最大核数,如果该参数不配置默认使用spark.deploy.defaultCores系统参数,该参数默认Integer.MAX
也意味着如果什么都不配置,单个app会占用spark集群的所有资源,在并行提交job,不断的pengding


3 java启动spark应用和spark-submit的区别
spark-submit -> Client -> Master(RegisterDriver)
java -> SparkContext ->AppClient ->Master(RegisterApp)
上面所述为代码流程图,其实两者区别蛮大,spark-submit的driver由work进程启动,分布在集群中
而java应用的driver是属于java应用进程的,本身业务进程作为driver端存在。这样的区别是java驱动的所在主机作为
网关机存在,需要考虑带宽问题。


4 standalone模式下,executor分配core的策略
spark.deploy.spreadOut系统参数默认为true,则为round-robin模式,否则为最大满足模式(私下了个名,哈哈)
round-robin模式 尽可能的均匀分配core在不同的可用executor进程中,优势并发,劣势启动进程多

最大满足模式 遍历可用work,有多少core用多少core


这些天查看资料和源码的一些总结,网上也有类似文件,建议多查看源码,不能人云亦云

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值