SparkContext的创建过程首先要加载配置文件,然后创建SparkEnv、TaskScheduler和DAGScheduler,具体过程和源码分析如下。
1.加载配置文件SparkConf
SparkConf在初始化时,需先选择相关的配置参数,包含master、appName、sparkHome、jars、environment等信息,然后通过构造方法传递给SparkContext,实现代码如下。这里的构造函数有多种表达形式,当SparkContex获取了全部相关的本地配置信息后开始下一步操作。
2.创建SparkEnv
创建SparkConf后就需要创建SparkEnv,这里面包括了很多Spark执行时的重要组件,包括MapOutputTracker、ShuffleFetcher、BlockManager等,在这里源码是通过SparkEnv类伴生对象SparkEnv Object内的createDriverEnv方法实现的,实现代码如下。
2.创建SparkEnv
创建SparkConf后就需要创建SparkEnv,这里面包括了很多Spark执行时的重要组件,包括MapOutputTracker、ShuffleFetcher、BlockManager等,在这里源码是通过SparkEnv类伴生对象SparkEnv Object内的createDriverEnv方法实现的,实现代码如下。
3.创建TaskScheduler
创建SparkEnv后,就需要创建SparkContext中调度执行方面的变量TaskScheduler,实现代码如下。
private[spark]var(schedulerBackend,taskScheduler)=
3.创建TaskScheduler(www.xing528.com)
创建SparkEnv后,就需要创建SparkContext中调度执行方面的变量TaskScheduler,实现代码如下。
private[spark]var(schedulerBackend,taskScheduler)=
TaskScheduler是依据Spark的执行模式进行初始化的,详细代码在SparkContext中的createTaskScheduler方法中。在这里以Standalone模式为例,它会将sc传递给TaskSchedulerImpl,然后创建SparkDeploySchedulerBackend并初始化,最后返回Scheduler对象,实现代码如下。
TaskScheduler是依据Spark的执行模式进行初始化的,详细代码在SparkContext中的createTaskScheduler方法中。在这里以Standalone模式为例,它会将sc传递给TaskSchedulerImpl,然后创建SparkDeploySchedulerBackend并初始化,最后返回Scheduler对象,实现代码如下。
4.创建DAGScheduler
创建TaskScheduler对象后,再将TaskScheduler对象传至DAGScheduler,用来创建DAGScheduler对象,实现代码如下。
4.创建DAGScheduler
创建TaskScheduler对象后,再将TaskScheduler对象传至DAGScheduler,用来创建DAGScheduler对象,实现代码如下。
创建DAGScheduler后再调用其start()方法将其启动。以上4点是整个SparkContext的创建过程,这其中包含了很多重要的步骤,从这个过程中能理解Spark的初始启动情况。
创建DAGScheduler后再调用其start()方法将其启动。以上4点是整个SparkContext的创建过程,这其中包含了很多重要的步骤,从这个过程中能理解Spark的初始启动情况。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。