Executor.scala

一、Executor类

首先判断本地性,获取slaves的host name(不是IP或者host: port),匹配运行环境为集群或者本地。如果不是本地执行,需要启动一个handler来监控所有的executor进程,避免阻塞。然后,初始化Spark执行环境。向SparkEnv注册executor资源,即registerSource方法。第三步,装载类,序列化类到内存中。第四,启动worker的线程池。第五,收集所有的task任务。接下就可以分配资源给task了,即将task与executor结合。

1、launchTask():新建一个TaskRunner,对应的有task的信息;然后调用runningTasks的put方法装载该TaskRunner,并在线程池中执行该task。

2、killTask():杀死指定线程。

3、releaseWriter():获取ShuffleId,与BlockManager进行交互。具体作用?需要了解spark.shuffle.consolidatFiles的意义。

4、stop():报告停止信息,关闭线程池。

二、TaskRunner类

继承自Runnable类,是task信息的容器。

1、kill():由Executor杀死指定线程。

2、run():重载的方法。执行task的进程,更改task的状态。同时启动GC机制,task的相关信息需要反序列化出来。run方法中需要保证task的epoch值与master一致,在MapOutPutTracker中体现,保证该任务可以被master管理。等任务执行完毕,分析任务执行的时间,序列化时间等等。然后对执行结果进行序列化处理,获取存储的block的Id并将序列化数据存入block。最后是复杂的异常处理。

3、CreateClassLoader():为task建立的用来加载用户指定的jars或者任何需要用到的classes。首先检查是否是加载用户自定义的类,是则新建childExecutorURLClassLoader,否则新建ExecutorURLClassLoader,最终返回MutableURLClassLoader类型。

4、addReplClassLoaderInfNeeded():家在一个新的ClassLoader来加载另一个jar。

5、updateDependencies():根据SparkContext所提供的新文件或者新jars,装载未被加载的依赖包,同时加载这些所依赖的包到ClassLoader中。

6、startDriverHeartbeater():启动心跳机制,将taskRunner的信息发送给master。

转载于:https://www.cnblogs.com/zx247549135/p/4341434.html

Spark源码学习1.6——Executor.scala相关推荐

  1. Spark源码学习之IDEA源码阅读环境搭建

    软件准备 (1)Java 1.8 (2)Scala 2.11.12(需要在IDEA中安装) (3)Maven 3.8.2(需要在IDEA中配置) (4)Git 2.33 以上软件需要安装好,并进行环境 ...

  2. spark源码(四)executor在worker上的创建过程,executor本质是什么,是线程池吗?

    上篇文章我们讲解了master调度driver和executor(application)的过程,但是对于executor在worker上的创建过程没有讲,这里我们接着上篇文章继续讲. 首先我们从wo ...

  3. spark源码学习(十)--- blockManager分析

    blockManager主要原理: blockmanager位于org.apache.spark.storage中,包含四个重要的组件:DiskStore,MemoryStore,Blocktrans ...

  4. spark 源码学习

    转载: http://xuxping.com/2017/08/21/Spark%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90% ...

  5. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)

    本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...

  6. 3000门徒内部训练绝密视频(泄密版)第2课:Scala面向对象彻底精通及Spark源码阅读

    Scala面向对象彻底精通及Spark源码阅读 不用写public class中的public class Person {private var myName = "flink" ...

  7. 3000门徒内部训练绝密视频(泄密版)第3课:Scala中函数式编程彻底精通及Spark源码阅读

    Scala中函数式编程彻底精通及Spark源码阅读 函数可以不依赖于类,函数可以作为函数的参数,函数可以作为函数的返回值 =>表明对左面的参数进行右面的加工 函数赋值给变量需要在函数名后面加空格 ...

  8. 3000门徒内部训练绝密视频(泄密版)第5课:彻底精通Scala隐式转换和并发编程及Spark源码阅读

    彻底精通Scala隐式转换和并发编程及Spark源码阅读 Akka ,Scala内部并发 隐式转换.隐式类.隐式参数 可以手动指定某种类型的对象或类转换成其他类型的对象或类.转换的原因是假设写好接口 ...

  9. Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

    朴素贝叶斯是机器学习中比较常用的一种模型,尤其在文本分类的问题上是比较常用的baseline.朴素贝叶斯本身训练速度快,具有可并行化程度高,可解释性好的优点,但由于其对特征之间的独立性假设不是很符合某 ...

  10. Spark源码和调优简介 Spark Core

    作者:calvinrzluo,腾讯 IEG 后台开发工程师 本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了 ...

最新文章

  1. 流程控制if、while、for
  2. flask blueprint/蓝图 基础
  3. Paper:《Spatial Transformer Networks》的翻译与解读
  4. Tomcat【环境搭建 01】安装包版本说明+安装+参数配置+启动(JDK11+最新版apache-tomcat-10.0.12)
  5. mysql dump 表数据 shell 脚本
  6. 2020年10月份Github上热门的开源项目
  7. docker build no such file or directory
  8. 计算机网络原基站,一种计算机网络工程用移动基站的制作方法
  9. 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
  10. sql 左侧要固定最近一周的周四 怎么写_程序员啊,你怎么这么忙啊?
  11. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)
  12. Spark internal - 多样化的运行模式 (下)
  13. 03173软件开发工具主观题汇总
  14. 孔夫子旧书网接口:实现输入ISBN获取图书信息
  15. 无锡学院----软件工程导论----李振宏知识点整理
  16. was expecting double-quote to start field name错误
  17. uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】
  18. 00. 微服务架构沉思录
  19. 靶机渗透【bulldog】
  20. LASSO和LARS

热门文章

  1. windows下使用mahout|Taste实现协同过滤算法
  2. Emacs shutcuts
  3. Blender插件初始化范例
  4. Sphere-AABB Intersecting test
  5. ubuntu 挂载优盘
  6. 获取iframe子页面节点,响应浏览器宽高
  7. 20154319 实验七 网络诈骗技术防范
  8. Beta版本展示博客
  9. mybatis-spring
  10. 【转】TreeList 选中节点时图标状态和背景色