Spark资源调度中的通信流程

本文深入探讨Spark的资源调度,涵盖driver、master、worker和executor的角色及其通信流程。从SparkContext创建TaskScheduler开始,讲解driver如何向master注册应用,启动executor,以及executor如何向driver注册并执行任务。重点解析了CoarseGrainedSchedulerBackend和executor之间的交互,特别是makeOffers方法在任务调度中的作用。文章引用了多个来源,旨在帮助读者理解Spark的资源调度机制。
摘要由CSDN通过智能技术生成
spark的调度包括资源调度和任务调度两种。前面介绍过spark的任务调度包括DAGScheduler&TaskScheduler,本文主要介绍资源调度,包括资源调度中涉及的各模块以及它们之间的通信。

Spark中物理节点包括三者,分别是client、master&worker,而与资源调度相关的角色有四个,分别是driver、master、worker和executor。这几个节点与角色之间的关系可以从下面这张图中描述:



Driver:用于运行Spark应用程序,其中的SparkContext是spark应用程序的入口。根据spark任务提交方式的不同,Driver可以运行在不同的物理节点上,通过spark shell提交时,driver运行于master节点,通过spark-submit提交时,driver运行于client端。

worker:集群中任何可以运行Spark应用程序的物理节点,对应物理机,运行一个或多个Executor进程;

Executor:内部是一个线程池,交给Executor的Task都运行在其中的一个线程,线程间共享资源。此外,Executor有一个代理类ExecutorBackend用于与TaskScheduler&TaskSetManager等模块保持通信,这部分涉及任务调度,这里不再详述。

这几个角色之间的启动流程如下:
SparkContext.createTaskScheduler->taskScheduler.start()->SchedulerBackend.start()->new AppClient&start
还有一条线:
AppClient.on
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值