SparkContext初始化过程
来源:互联网 发布:防止sql注入用什么工具 编辑:程序博客网 时间:2024/05/19 10:07
概要
SparkContext是程序执行的入口,一个SparkContext代表一个应用,深入理解spark运行时机制,首先要了解SparkContext初始化过程。
SparkContext初始化
SparkContext的定义
构造参数为SparkConf,其存储spark相关的配置信息,查看SparkConf定义
SparkConf内部用ConcurrentHashMap存储各种配置信息,初始化时会加载所有以spark.开头的环境变量。
SparkContext初始化
查看初始化对应代码
clone SparkConf变量,接着判断spark.master和spark.app.name是否存在,如果是YARN cluster模式则必须设置spark.yarn.app.id,然后是driver的host,port信息,最后是jars和files,接着查看
_eventLogDir是否记录运行时信息,由spark.eventLog.enabled和spark.eventLog.dir控制,以及是否压缩该信息_eventLogCodec,spark.externalBlockStore.folderName设置运行时本地存储的目录名,为“spark-” + randomUUID.toString(),如果为yarn-client模式,设置SPARK_YARN_MODE=true,使用JobProgressListener跟踪运行时信息,用于UI展示,最后创建SparkEnv对象,创建SparkEnv的过程涉及到非常多spark-core中的核心类。
- 查看createSparkEnv
- 继续查看SparkEnv.createDriverEnv
获取host和port信息,调用create方法。 - 继续查看create方法
创建安全相关的SecurityManager,通过spark.authenticate配置
创建基于akka的分布式消息系统,中间的创建过程略多,这里不再描述,最后看看SparkEnv初始化了哪些对象
上图中列出的对象几乎涵盖了spark-core的核心类,后续会对其分别分析,至此,SparkEnv创建完毕。
接着上面SparkEnv.set(_env)(限于篇幅,关于UI方面的代码可能会被略掉),_metadataCleaner使用TimerTask定期清理persistentRdd,读取hadoop配置,将jar和file的路径添加到rpcEnv的fileServer,读取Executor相关变量,重要的参数为ExecutorMemory
接着,_heartbeatReceiver是默认基于netty实现的心跳机制,创建schedulerBackend用于提交任务,创建taskScheduler和dagScheduler,获取applicationId,启动度量系统,获取eventLogger
executorAllocationManager关于Executor动态资源分配,通过spark.dynamicAllocation.enabled设置,创建contextcleaner用于清理过期的RDD, shuffle和broadcast ,启动ListenerBus,并post环境信息和应用信息,最后添加确保context停止的hook,至此整个sparkcontext的初始化流程结束。
总结
通过对sparkcontext初始化过程的跟踪,主要涉及到的内容如下
- SparkConf读取配置和校验,log和UI相关的度量系统。
- 创建SparkEnv,涉及到众多重要对象,如rpcEnv, actorSystem, serializer, closureSerializer, cacheManager, mapOutputTracker, shuffleManager, broadcastManager, blockTransferService, blockManager, securityManager, sparkFilesDir, metricsSystem, memoryManager等。
- 心跳机制,taskScheduler和dagScheduler的创建。
- SparkContext初始化过程
- SparkContext初始化的核心过程
- SparkContext初始化
- 延长SparkContext初始化时间
- SparkContext的初始化机制
- 图解SparkContext创建过程
- SparkContext初始化源码阅读笔记
- Spark 学习日志- SparkContext初始化
- Spark源码解读之SparkContext初始化
- spark2.x---2. SparkContext构成与初始化
- SparkContext创建初始化完成的主要工作
- SparkContext初始化图解与源码解析
- spark学习笔记:使用API初始化SparkContext
- SparkContext
- SparkContext
- Spark学习之4:SparkContext执行过程
- Spark分析之SparkContext启动过程分析
- SparkContext的初始化(叔篇)——TaskScheduler的启动
- linux查找目录下的所有文件中是否含有某个字符串
- MxNet系列——how_to——bucketing
- MLaPP Chapter 7 Linear Regression 线性回归
- Ubuntu系统下硬盘安装windows
- 算法训练 未名湖边的烦恼 dp
- SparkContext初始化过程
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
- 深入分析synchronized的实现原理
- URLEncoder URL编码、解码
- reboot reason的客制化
- 泛型编程实现链表
- 关于科学上网和编辑器
- head标签里的内容
- Qt之音乐播放器一