代码改变世界

Spark Driver

  DataBases  阅读(234)  评论(0编辑  收藏  举报

关于driver

用户提交的应用程序代码在spark中运行起来就是一个driver,用户提交的程序运行起来就是一个driver,
他是一个一段特殊的excutor进程,这个进程除了一般excutor都具有的运行环境外,这个进程里面运行着
DAGscheduler Tasksheduler Schedulerbackedn等组件。

这段计算π值的程序代码在spark上运行起来就是一个driver,可以看到这段程序里有个main函数,它是整个应用程序的开始,
也可以看到在这段代码中创建了context,这样与官网给的解释就完全对上了。

一个应用程序是如何与一个driver一一对应的呢?
在worker.scala中我们找到了创建driver的代码,一步步往上追溯就能发现一个Driver如何与一个应用程序一一对应起来的

driver做什么
1)运行应用程序的main函数
2)创建spark的上下文
3)划分RDD并生成有向无环图(DAGScheduler)
4)与spark中的其他组进行协调,协调资源等等(SchedulerBackend)
5)生成并发送task到executor(taskScheduler)
driver运行在哪里(在这里只讨论yarn模式)
There are two deploy modes that can be used to launch Spark application on Yarn.In cluster mode,
the Spark driver run inside an application master process.And in the client mode,the driver runs in the client process.

yarn-cluster模式下,client将用户程序提交到到spark集群中就与spark集群断开联系了,此时client将不会发挥其他任何作用,仅仅负责提交。
在此模式下。AM和driver是同一个东西,但官网上给的是driver运行在AM里,可以理解为AM包括了driver的功能就像Driver运行在AM里一样,
此时的AM既能够向AM申请资源并进行分配,又能完成driver划分RDD提交task等工作

yarn-client模式下

yarn-client模式下,Driver运行在客户端上,先有driver再用AM,此时driver负责RDD生成、task生成和分发,向AM申请资源等 ,AM负责向RM申请资源,
其他的都由driver来完成.

总结
用户提交的程序运行起来就是一个driver,他是一个一段特殊的excutor进程,这个进程除了一般excutor都具有的运行环境外,
这个进程里面运行着DAGscheduler Tasksheduler Schedulerbackedn等组件

yarn-Cluster模式下driver运行在AM里,这个AM既完成划分RDD生成有向无环图提交task等任务也负责管理与这个application运行有关的executor

yarn-Client模式下由AM负责管理excutor其余的由driver完成。

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示