栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark运行原理

Spark运行原理

Spark运行原理

名词介绍

Cluster ManagerSpark资源管理器
Worker作业任务的工作节点
Driver Program任务控制节点
Executor负责执行具体任务的进程
RDD弹性分布式数据集
DAG有向无环图
ApplicationSpark应用程序
Job作业
task运行在Executor的任务线程集
stage作业调度的基本单位


Spark运行流程图——网图侵图删

    我们写的Spark应用程序,在提交执行时,首先会启动一个Driver进程(每个应用程序都会对应一个Driver进程),
    Driver启动后,会创建一个Spark Context对象,这个context对象就是程序的执行入口,必须第一定义,就像Java的main函数,这是程序的入口。构建Spark Context对象后,Context对象会向Cluster Manager节点申请运行资源环境(CPU,内存等),因为Cluster掌握整个集群的资源,它会首先找到离数据几点近的,资源利用率低的节点优先分配。Cluster节点会将Worker Node节点分配给Driver,具体是,Cluster节点告诉Worker节点已经被分配给Driver后,Worker节点会首先启动Executor进程,准备好基本运行环境后,会通知Driver,表示资源准备到位。也会向Cluster定时发送心跳信息,告诉资源信息。Driver收到Worker的信息后,它会根据应用程序构建DAG有向无环图,然后交给DAG调度器根据宽窄依赖划分阶段,一个阶段就是一个TaskSet(任务集合),这些任务集合会交给Task调度器,由Task去进行分配到Worker上的Executor进程中执行。Executor进程拿到具体的任务并执行,期间Executor进程会定时和Driver保持通信,如果任务在Executor进程执行任务时,出现错误(具体工作的是Executor下的线程),线程会重新从头开始计算,这个过程重复三次后,依旧错误,这个时候,Executor会告诉Driver运行出错,然后Task调度器会重新再发给他一次应用程序,如果三次后依旧出错,那么Driver会重新构建DAG图,重新分解,再次分发给Executor进程执行,如果再次出错,那么整个应用程序就会结束。如果程序执行成功,Exeutor会将结果发给Driver进程,然后告知Cluster节点任务完成,接着就是运行资源释放清零,任务彻底完成。
    Tips:Spark申请运行资源时,是一次性分发到位的,就像我的应用程序需要2核2G内存一样,必须全部满足,否则不执行,这和MR有着本质不同的,MR是拿一部分资源先运行,等不够了,再次申请资源。这样资源利用率很高,但在效率上没有Spark高,同样的,Spark在分布式运行时,当某一部分任务完成时,并不是立即是释放资源,而是等所有任务都完成时,才一次性释放所有资源。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号