基本概念
- 名词解释
- Driver:Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等
- Cluster Manager:指的是在集群上获取资源的外部服务,Standalone模式下由Master负责,Yarn模式下ResourceManager负责;
- Executor:是运行在工作节点Worker上的进程,负责运行任务,并为应用程序存储数据,是执行分区计算任务的进程;
- RDD:Resilient distributed Dataset弹性分布式数据集,是分布式内存的一个抽象概念;
- DAG:Directed Acyclic Graph有向无环图,反映RDD之间的依赖关系和执行流程;
- Job:作业,按照DAG执行就是一个作业;Job==DAG
- Stage:阶段,是作业的基本调度单位,同一个Stage中的Task可以并行执行,多个Task组成TaskSet任务集
基本流程
- Spark运行基本流程
- SparkContext向资源管理器注册并申请运行Executor资源;
- 资源管理器为Executor分配资源并启动Executor进程,Executor运行情况将随着心跳发送到资源管理器上;
- SparkContext根据RDD的依赖关系构建成DAG图,并提交给DAGScheduler进行解析划分成Stage,并把该Stage中的Task组成Taskset发送给TaskScheduler。
- TaskScheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor。
- Executor将Task丢入到线程池中执行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。
流程图解
总结
- Spark应用被提交–>SparkContext向资源管理器注册并申请资源–>启动Executor
- RDD–>构建DAG–>DAGScheduler划分Stage形成TaskSet–>TaskScheduler提交Task–>Worker上的Executor执行Task
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。