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

相关推荐
算家云11 分钟前
Ubuntu 22.04安装MongoDB:GLM4模型对话数据收集与微调教程
大数据·人工智能·mongodb·ubuntu·elasticsearch·算家云·glm4微调
宅小海1 小时前
11 配置Hadoop集群-免密登录
大数据·hadoop·github
小李独爱秋6 小时前
深入解析MapReduce工作流程:从核心原理到实战优化
大数据·mapreduce
潘多编程8 小时前
SpringBoot分布式项目订单管理实战:Mybatis最佳实践全解
spring boot·分布式·mybatis
小样vvv9 小时前
【Es】基础入门:开启全文搜索的大门
大数据·elasticsearch·搜索引擎
黄雪超10 小时前
Flink介绍——实时计算核心论文之S4论文详解
大数据·论文阅读·flink
星光璀璨山河无恙11 小时前
【Hadoop】Hadoop3.1.4完全分布式集群搭建
大数据·hadoop·分布式
GIS数据转换器12 小时前
在机器人和无人机时代,测绘人的出路在哪里?
大数据·人工智能·信息可视化·机器人·自动驾驶·汽车·无人机
不辉放弃12 小时前
Spark 在 Python 大数据中的作用
大数据·python