SparkContext初始化

一、SparkConf概述
1. SparkContext需要传入SparkConf来进行初始化,用于维护Spark的配置属性;
2. SparkConf内部使用ConcurrentHashMap来维护所有的配置;
3. SparkConf提供的setter方法返回的是this,所有它允许使用链式来设置属性。


二、SparkContext的初始化
1. 复制SparkConf配置信息,然后校验或者添加新的配置信息;
(1)、SparkContext的住构造器参数为SparkConf;
(1)、必须指定spark.master和spark.app.name,否则抛出异常。


2. 创建SparkEnv;
(1)、SparkEnv包含了一个Spark应用的运行环境对象;
(2)、环境对象包括:serializer, Akka actor system, block manager, map output tracker等等。
   
3. 创建MetadataCleaner;
(1)、MetadataCleaner是用来定时的清理metadata的,metadata有6种类型,封装在了MetadataCleanerType类中。


4. 创建SparkStatusTracker
(1)、SparkStatusTracker是低级别的状态报告API,用于监控job和stage。


5. 初始化Spark UI;
(1)、SparkUI为Spark监控Web平台提供了Spark环境、任务的整个生命周期的监控。


6.  HadoopConfiguration;
(1)、Spark默认使用HDFS作为分布式文件系统,所以需要获取Hadoop相关的配置信息;
     1)将Amazon S3文件系统的AccessKeyId和SecretAccessKey加载到hadoop的Configuration;
     2)将SparkConf中所有以spark.hadoop.开头的属性复制到Hadoop的Configuration;
     3)将SparkConf的spark.buffer.size属性复制为Hadoop的Configuration的io.file.buffer.size属性。


7.  ExecutorEnvs;
(1)、ExecutorEnvs包含的环境变量会在注册应用时发送给Master,Master给Worker发送调度后,
       Worker最终使用executorEnvs提供的信息启动Executor。


8. 注册HeartbeatReceiver;   




9. 创建任务调度器TaskScheduler;
(1)、 创建TaskSchedulerImpl;
    1)从SparkConf中读取配置信息,包括每个任务分配的CPU数;
    2)创建TaskResultGetter,通过线程池对Worker上的Executor发送的Task的执行结果进行处理。
(2)、 TaskSchedulerImpl的初始化;
    1) 使TaskSchedulerImpl持有LocalBackend的引用;
    2)创建Pool,Pool中缓存了调度队列,调度算法以及TaskSetManager集合等信息;
    3)创建FIFOSchedulableBuilder,FIFOSchedulableBuilder用来操作Pool中的调度队列。


10. 创建DAGScheduler;
(1)、DAGScheduler的主要作用是在TaskSchedulerImpl正式提交任务之前做一些准备工作,
       包括:创建Job,将DAG中的RDD划分到不同的Stage,提交Stage等等。


11. 启动TaskScheduler;

    (1)、启动TaskScheduler时,实际上调用量backend的start方法。


转自:http://blog.csdn.net/xw_classmate/article/details/53408245


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值