SparkContext初始化
来源:互联网 发布:药品查询软件 编辑:程序博客网 时间:2024/06/05 11:07
一、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. 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
- SparkContext初始化
- 延长SparkContext初始化时间
- SparkContext初始化过程
- SparkContext的初始化机制
- SparkContext初始化源码阅读笔记
- SparkContext初始化的核心过程
- Spark 学习日志- SparkContext初始化
- Spark源码解读之SparkContext初始化
- spark2.x---2. SparkContext构成与初始化
- SparkContext创建初始化完成的主要工作
- SparkContext初始化图解与源码解析
- spark学习笔记:使用API初始化SparkContext
- SparkContext
- SparkContext
- SparkContext的初始化(叔篇)——TaskScheduler的启动
- 解决Windows下pyspark无法初始化SparkContext(sc)的问题
- Spark内核源码深度剖析:sparkContext初始化的源码核心
- spark学习-30-spark2.2.0的SparkContext初始化
- win7安装
- matploblib 动画
- 文章标题
- UVA 最大面积最小三角形剖分
- java水仙花计算方法
- SparkContext初始化
- POSIX正则表达式C语言接口文档
- 【Python】17个新手常见Python运行时错误
- break和continue
- POJ 1236 Network of Schools【强连通缩点】【Tarjan算法】
- 一分钟了解“用英语表示投入了大量研究,仍然是难题”
- 你假笨JVM参数
- ionic 上拉加载
- 【剑指offer】代码的完整性