首页 理论教育 Local模式内部实现原理详解

Local模式内部实现原理详解

时间:2023-06-20 理论教育 版权反馈
【摘要】:下面我们结合Spark 1.2的源代码来分析一下它的内部实现原理。因为Local模式不需要任何配置,所有的代码都是在本地运行,因此我们可以经常用Local模式来跟踪调试程序用。

Local模式内部实现原理详解

本地模式(Local)使用LocalBackend类配合TaskSchedulerImpl类来完成任务的调度。下面我们结合Spark 1.2的源代码来分析一下它的内部实现原理。

1.在SparkContext对象创建的时候会同时在其内部调用自己的createTaskScheduler()方法初始化TaskSchedulerImpl调度器,同时会根据运行模式的参数值来匹配所需要选择的运行模式,然后生成LocalBackend的对象。并把backend当作参数传递给TaskSchedulerImpl的in-tialize方法。

2.这时候TaskScheduler(TaskSchedulerImpl的父类)中调用submitTasks方法提交任务的时候,它内部的backend是LocalBackend对象。backend调用reviveoffers方法进行资源申请。

3.在LocalBackend调用reviveOffers()方法后,会发送一个ReviveOffers消息给自己的内部类LocalActor接收并处理该消息。(www.xing528.com)

4.localActor通过自己的receiveWithLogging()方法接受到ReviveOffers消息,并结合Sca-la语言的模式匹配进行消息的处理,这时会继续调用LocalBackend的reviveOffers()方法。需要注意的是,在这里的消息通信用到的是基于Scala语言的Actor模型的Akka通信,对于Akka通信原理的详细分析,我们会在第5章详细介绍。

5.localbackend根据可用的CPU核(freeCores)设定值生成资源(offers)返回给Task-ShedulerImpl使用,最后通过Executor的launchTask方法把task发送到线程池中运行。因为Local模式不需要任何配置,所有的代码都是在本地运行,因此我们可以经常用Local模式来跟踪调试程序用。

至此,我们把Local模式的内部实现原理做了一个简单的分析,考虑到它的内部实现原理只是Spark的Standalone运行模式的一个特例,所以我们会把Standalone模式作为一个重点内容进行分析,当理解了Standalone模式的内部实现原理后,对于更深入地理解Local模式以及Yarn模式就会感到很容易。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈