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进程启动源码实现分析

相关推荐
captain_AIouo2 分钟前
Captain AI:智能运营破局——OZON商家增长引擎
大数据·人工智能·经验分享·aigc
我要用代码向我喜欢的女孩表白11 分钟前
在spark集群上在部署一套spark环境,不要影响过去环境
大数据·分布式·spark
Elastic 中国社区官方博客17 分钟前
在 Elastic 中使用 OpenTelemetry 内容包可视化 OpenTelemetry 数据
大数据·开发语言·数据库·elasticsearch·搜索引擎
lifallen18 分钟前
Flink Checkpoint 流程、Barrier 流动与 RocksDB 排障
java·大数据·flink
Mike117.26 分钟前
GBase 8a UNION 和 UNION ALL 的使用边界
大数据·数据库
跨境卫士—小依1 小时前
平台流量分发机制变化跨境卖家如何重新获取曝光
大数据·人工智能·跨境电商·亚马逊·营销策略
jixingkj1 小时前
避开设置误区,让免打扰模式真正适配你的生活
大数据·安全·智能手机
小荟荟2 小时前
全国数据资产新闻和报纸摘要联播 2026年3月26日 第29期
大数据·人工智能
热爱专研AI的学妹2 小时前
Claude Code 完全使用指南:从入门到高效 AI 编程实战
大数据·人工智能·阿里云·语言模型
xushichang123_2 小时前
AI获客工具有哪些?径硕科技(JINGdigital)与JINGEO:B2B企业智能增长的双引擎
大数据·人工智能·科技