Spark的架构与运行逻辑
本篇内容主要讲解"Spark的架构与运行逻辑",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spark的架构与运行逻辑"吧!
一:Spark的架构。
1. Driver:运行Application的main()函数并且创建SparkContext。
2. Client:用户提交作业的客户端。
3. Worker:集群中任何可以运行 Application 代码的节点,运行一个或多个 Executor
进程。
4. Executor :运行在 Worker 的 Task 执行器, Executor 启动线程池运行 Task,并且
负责将数据存在内存或者磁盘上。每个 Application 都会申请各自的 Executor 来处理任务。
5. SparkContext:整个应用的上下文,控制应用的生命周期。
6. RDD: Spark 的基本计算单元,一组 RDD 形成执行的有向无环图 RDD Graph。
7. DAG Scheduler:根据 Job 构建基于 Stage 的 DAG 工作流,并提交 Stage 给 TaskScheduler。
8. TaskScheduler:将 Task 分发给 Executor 执行。
9. SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
二:运行逻辑。
1. Spark 作业提交流程。
如下图,Client提交应用,Master找到一个Worker启动Driver,Driver向Master或者资源管理器申请资源,之后将应用转化为RDD有向无环图,再由DAGScheduler将RDD有向无环图转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor进行执行。任务执行的过程中其他组件在协同工作确保整个应用顺利执行。
2. Spark 作业运行逻辑。
如下图,在 Spark 应用中,整个执行流程在逻辑上运算之间会形成有向无环图。Action 算子触发之后会将所有累积的算子形成一个有向无环图,然后由调度器调度该图上的任务进行运算。 Spark 的调度方式与 MapReduce 有所不同。 Spark 根据 RDD 之间不同的依赖关系切分形成不同的阶段( Stage),一个阶段包含一系列函数进行流水线执行。图中的 A、 B、 C、 D、 E、 F,分别代表不同的 RDD, RDD 内的一个方框代表一个数据块。数据从 HDFS 输入 Spark,形成 RDD A 和 RDD C, RDD C 上执行 map 操作,
转换为 RDD D, RDD B 和 RDD E 进行 join 操作转换为 F,而在 B 到 F 的过程中又会
进行 Shuff le。最后 RDD F 通过函数 saveAsSequenceFile 输出保存到 HDFS 中。
到此,相信大家对"Spark的架构与运行逻辑"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!