Spark任务提交流程

当包含在application master中的spark-driver启动后,会与资源调度平台交互获取其他执行器资源,并通过反向注册通知对应的node节点启动执行容器。此外,还会根据程序的执行规划生成两个非常重要的东西,一个是根据spark任务执行计划生成n个ADG有向无环图,另一个是根据有向无环图生成对应的task set,也可以统称为stage,ADG和taskset由于宽窄依赖以及程序的复杂度从而导致本就是一对多的关系

在执行器启动并接收了taskset后,就意味着任务开始了跑数阶段,每一个taskset可以视为一个弹性数据集,简称rdd集合,不同的taskset之间以中间文件的方式传递数据,在这个过程中往往需要注意数据key的倾斜情况、task的多少导致的文件数是否合理、写入和写出的效率等,对任务的优化也生效于这些环节

不同的key分布、数据集的分区策略和中间文件生成策略会对shuffer的性能造成直接的影响,但并不是所有的teskset之间数据传递时都会发生shuffer,也有单纯的一对一数据交换。而是否发生shuffer取决于当前taskset数据血缘的宽窄与否,或者是你对rdd分区策略是否有干预,通俗的讲就是两个task set传递数据的key是否需要从新排列

应当注意的是,spark的shuffer分为两个阶段,上一个taskset的结束向文件中写数据的阶段叫做shuffer write,下一个taskset的读取叫做shuffer read,而没有发生shffer的taskset在这个流程中叫做inputdata和outputdata,可以在spark的ui上看到相关的消息

从跑数上总体来说,spark-driver内部是依靠了两个调度器,ADG调度器负责生成可用于执行的stage,而stage的调度与监控则由taskset调度器在负责,在所有的stage执行结束后,AM会通过向资源调度框架申请注销自己,来结束任务

相关推荐
又是努力搬砖的一年13 分钟前
elasticsearch修改字段类型
android·大数据·elasticsearch
六行神算API-天璇36 分钟前
数字人“个性化”背后的玄机:大模型微调与RAG实战解析
大数据·人工智能
在职工程博士44 分钟前
在职博士-南京邮电大学申请考核制博士招生实施细则(信息通信、信息管理工程方向)
大数据·数据库·嵌入式硬件·物联网·硬件工程·数据库开发
Deepoch1 小时前
低幻觉AI:重塑科研与教育领域的可信智能新范式
大数据·人工智能·机器学习·机器人·具身模型·deepoc·低幻觉ai
RPA机器人就选八爪鱼1 小时前
银行业流程自动化升级:RPA 机器人赋能金融数智转型
大数据·人工智能·机器人·自动化·rpa
TG:@yunlaoda360 云老大1 小时前
如何了解腾讯云国际站代理商的MRP有什么优势呢?
大数据·云计算·产品运营·腾讯云
管理大亨1 小时前
企业级ELK:从日志收集到业务驱动
java·大数据·网络·数据库·elk·elasticsearch
小马爱打代码2 小时前
架构设计:ElasticSearch+HBase 海量存储架构设计与实现
大数据·elasticsearch·hbase
写代码的【黑咖啡】2 小时前
在大数据数仓中如何设计 Data Profiling
大数据
永霖光电_UVLED2 小时前
Navitas 与 Cyient 达成合作伙伴关系,旨在推动氮化镓(GaN)技术在印度的普及
大数据·人工智能·生成对抗网络