原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3879151.html

  

  在SparkContext创建过程中会调用createTaskScheduler函数来启动TaskScheduler任务调度器,本文就详细分析TaskScheduler的工作原理:

  TaskScheduler会根据部署方式而选择不同的SchedulerBackend来处理

    

    

    下图展示了TaskScheduler、TaskSchedulerImpl、SchedulerBackend等任务调度相关类之间的关系

    针对不同部署方式会有不同的TaskScheduler与SchedulerBackend进行组合:

      Local模式:TaskSchedulerImpl + LocalBackend

      Spark集群模式:TaskSchedulerImpl + SparkDepolySchedulerBackend

      Yarn-Cluster模式:YarnClusterScheduler + CoarseGrainedSchedulerBackend

      Yarn-Client模式:YarnClientClusterScheduler + YarnClientSchedulerBackend

      TaskScheduler类负责任务调度资源的分配,SchedulerBackend负责与Master、Worker通信收集Worker上分配给该应用使用的资源情况。

    下面以Spark集群模式为例,分析在TaskSchedulerImpl与SparkDepolySchedulerBackend类中的具体操作

    一个典型的任务调度模块主要功能就是获取集群资源信息,然后根据调度策略为任务分配资源,TaskSchedulermpl也是这个工作原理,分为资源收集与资源分配:

      1、资源信息收集

        SparkDepolySchedulerBackend类就是专门负责收集为Application分配的Worker的资源信息的,在它的父类CoarseGrainedSchedulerBackend

        中的DriverActor就是与Worker通信的Actor。根据Spark源码分析(一)-Standalone启动过程文中介绍的Worker启动后会向Driver发送RegisterExecutor

        消息,此消息中就包含了Executor为Application分配的计算资源信息,而接收该消息的Actor也正是DriverActor。

        

    2、资源分配

      TaskSchedulerImpl类就是负责为Task分配资源的。在CoarseGrainedSchedulerBackend获取到可用资源后就会通过makeOffers方法通知

      TaskSchedulerImpl对资源进行分配,TaskSchedulerImpl的resourceOffers方法就是负责为Task分配计算资源的,在为Task分配好资源后

      又会通过lauchTasks方法发送LaunchTask消息通知Worker上的Executor执行Task

        

   

  最后,总结一下TaskScheduler相关知识。TaskScheduler是在Application执行过程中,为它进行任务调度的,是属于Driver侧的。对应于一个Application就会

  有一个TaskScheduler,TaskScheduler和Application是一一对应的。TaskScheduler对资源的控制也比较鲁棒(所以会取名CoarseGrainedSchedulerBackend),

  一个Application申请Worker的计算资源,只要Application不结束就会一直被占有。   

  

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3879151.html        

最新文章

  1. Redis性能问题排查解决手册(七)
  2. Oracle 11g服务详细介绍及哪些服务是必须开启的?
  3. 更改SharePoint 2007/2010/2013 Web 应用程序端口号
  4. Java学习注意事项
  5. sqlserver 链接 ODBC 访问 MySql
  6. Ural 1741 Communication Fiend(隐式图+虚拟节点最短路)
  7. c# key event
  8. JS中exec函数与match函数的区别与联系
  9. jquery二级目录选中当前页的样式
  10. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
  11. listview默认选择第一项,点击换子项背景图
  12. Afinal载入网络图片及下载文件用法
  13. javascript中事件对象注册与删除
  14. jquery源码解析日常
  15. javaweb开发大致流程
  16. Ubuntu 13.10 录音有特别大噪音解决办法
  17. jquery.validate使用详解
  18. nginx配置 解决ajax请求跨域问题
  19. CentOS启动OpenVPN报错:Failed to start OpenVPN Robust And Highly Flexible Tunneling Application On server.
  20. vue的面包屑导航组件

热门文章

  1. 关于asp.net和iis的进程/线程问题,假如网站有1000个人访问,会产生多少个进程/线程啊
  2. [IOS] Storyboard全解析-第一部分
  3. 树莓派最简易Wifi配置
  4. Oracle小技巧
  5. 软件工程随堂小作业——随机四则运算Ⅱ(C++)
  6. 卷积神经网络CNN介绍:结构框架,源码理解【转】
  7. angularjs源码分析之:angularjs执行流程
  8. 提取html中的src 路径
  9. Surface Pro 3 扩展坞体验
  10. python-操作mssql数据库