Spark面试题

Spark---Driver进程

本地运行时,主代码类进程就是driver进程

集群运行时,client发送请求给Master,Master在随机worker节点上(满足资源)启动driver。

driver挂掉------>Executors挂掉------>application就挂掉了

客户端driver的启动

根据提交命令,启动Driver的分别对应了不同的mainclass.

如果是client模式,那么在本地直接执行我们的主代码类,该进程就是Driver进程。

如果是standalone cluster模式,客户端会向maste发送http请求,master稍后会在worker上启动单独的Driver进程。


Master为Driver调度资源,通知Worker启动Driver

资源调度的实现在schedule(),实现相对于Executor的资源分配要简单的多,因为Driver只有一个进程,只在其中一个worker上启动即可。实现如下:

1、首先对所有worker的shuffle随机排列,然后从第一个worker开始轮询,如果worker上的内存和cores能够满足Driver的需求,那么就在该worker上启动Driver。

2、在该worker上启动Driver,实现在launchDriver()方法,在launchDriver()中,就是向worker发送消息LaunchDriver


Worker开始启动Driver进程

Worker在接收到Master发的LaunchDriver消息后,便会开始启动Driver进程,实现如下:

1、构造DriverRunner,由DriverRunner负责运行Driver命令的启动

2、DriverRunner会新建一个线程,由这个线程去负责启动和监控Driver进程

3、从本地拷贝依赖的任务jar(我们自己的jar包)到Driver的工作目录

4、如果设置了Driver进程的监控,--supervise参数那么在Driver进程以非0退出码结束时(一般都是异常结束),Worker会重新启动Driver进程。

注意:Driver异常退出了之后所有的Executors也跟着被kill掉了,整个application也就宕掉了。重新启动Driver进程会重新启动一个新的application

参考:Spark源码分析------Driver进程启动源码实现分析

相关推荐
蜜獾云几秒前
Kafka(1)-Kafka基本术语
分布式·kafka
天远云服2 分钟前
驾培系统车辆核验实战:PHP集成天远二手车估值API实现学员车辆信息自动化管理
大数据·开发语言·自动化·php
AC赳赳老秦13 分钟前
OpenClaw办公文档处理技能:批量转换PDF/Excel,提取数据高效办公
大数据·人工智能·python·django·去中心化·deepseek·openclaw
环小保15 分钟前
半导体制造的绿色“隐形”战场:废气治理如何“精准狙击”?
大数据·人工智能
珠海西格16 分钟前
1MW光伏项目“四可”装置数据采集类设备具体配置详解
服务器·网络·人工智能·分布式·安全
ws20190723 分钟前
锚定华南产业高地,2026广州汽车轻量化展解码行业升级新机遇
大数据·人工智能·科技·汽车
金融小师妹30 分钟前
基于多因子定价模型解析:美元强势与利率预期重构驱动的金价8连跌机制
大数据·人工智能·svn·能源
QYR_Jodie32 分钟前
全球聚硫醇固化剂市场:2026-2032年CAGR7.0%,2032年规模2.4亿美元
大数据·人工智能
AI营销快线32 分钟前
AI营销如何破解增长瓶颈?原圈科技以智能体驱动高效增长
大数据·人工智能
天远Date Lab38 分钟前
Python实战:基于天远二手车估值API构建企业车队资产数字化管理方案
大数据·人工智能·python