首页 > 其他 > 详细

Spark运行基本流程

时间:2020-07-04 14:31:53      阅读:53      评论:0      收藏:0      [点我收藏+]

这一章节主要讲了spark如何工作

技术分享图片

 

 

spark的架构属于主从架构,主节点复制任务的一系列操作以及资源申请,在spark主节点叫做DRIVER节点

driver节点的作用:

        1:根据用户编写的代码会创建一个SparkContext指挥官,然后向资源管理器申请(内存和cpu等资源)进行任务的分配和监控,资源管理器接到资源申请的请求后,资源管理器会为excutor分配内存资源,这时Worker Node里面的Excutor进程就会启动,从而执行任务。(但是任务从何而来?)

        技术分享图片技术分享图片

        2:首先SparkconText会根据用户编写代码将需要操作的据数据集RDD对象构建DAG有向图,然后将DAG有向图交给组件DAG Scheduler,利用DAG Scheduler将有向图解析成很多阶段,每个阶段包括很多任务。最后由Task Scheuler组件将任务分发到worker Node中的线程执行。

        

      为什么是操作RDD数据集,RDD数据集的优势是什么?

      答:

        1:大数据的计算过程中需要进行多次的迭代计算,这样就会造成中间结果的数据读写操作,导致频繁的序列化和反序列化的系统开销,因此需要利用RDD数据抽象,减少磁盘的IO开销和反复读写次数。RDD出现就是为了避免这些,用逻辑转换为一系列的转换操作。得到最终的结果。

                                                                                   技术分享图片技术分享图片

 

 

        2:Rdd是一个分布式对象集合,其本质上是一个只读的分区记录集合,这样就能就行分布式计算。

 

                                                                                                                             技术分享图片

 

 

   为何使用DAG有向图,DAG有向图的优势是什么?

      答:不同的RDD一系列的转换操作会形成依赖关系,最终生成DAG图,可以利用优化原理实现数据的管道化处理,无需数据落地(数据不需要存储在磁盘或其他的存储器中)直接将数据扔到下一个操作中执行技术分享图片

 

 

 

      task scheuler是如何将任务进行分配?

      答:在Spark中,Exceutor进程在获取资源后会创建很多的线程,线程会自己主动向task Scheduler申请任务,而task scheulder 会根据数据在哪里就会执行该任务,这样就减少额外的数据传输开销,实现了数据的本地化操作,从而达到了计算向数据靠拢。

)。

                          3:最后将Excutor执行的最终结果反馈到用户中

技术分享图片

 

 

总结:Spark的运行原理中的各个组件以及RDD的出现、DAG都是SPARK能快速处理大量数据的依据和保证

 

Spark运行基本流程

原文:https://www.cnblogs.com/jiaxinHuang/p/13234679.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!