zoukankan      html  css  js  c++  java
  • 关于大数据中-----任务调度、资源调度

    1、 任务调度

         a、RDD Objects---->转换为DAG有向无环图

         b、DAGScheduler---根据RDD之间的宽窄依赖切分Job,切分为Stage

         c、Stage本质上就是---TaskSet,Stage就会以TaskSet形式传给TaskScheduler

         d、TaskScheduler遍历TaskSet,分配给executor执行

            |如果说executor中task执行失败,跟TaskScheduler申请重试3次,3次仍然失败

    DAGScheduler重试重新发送TaskSet,默认会重试4次。如果仍然失败,宣告Stage执行失败

    ,也就是包含Stage的job宣告执行失败。

         e、推测执行---表示一个spark job中,可能会存在某一些task执行缓慢,推测会启动

    一个相同的task,选择先执行完的作为结果

            |推测执行在spark中默认是关闭的

      1、可能出现数据重复写入

      2、集群奔溃。数据倾斜--task本身计算量大,耗时较长

      2、spark的资源调度流程

        master:管理整个集群的资源

        Worker:每启动一个Worker都注册在Master上

      a、当提交spark的程序时,main会创建driver进程

              当执行到val sc=new SparkContext()---会默认创建两个对象DAGScheduler、

       TaskScheduler对象。

      b、TaskScheduler向Master发送一个请求,申请程序运行需要资源

      c、maste根据TaskScheduler发送的请求,去每一个worker上查看其资源使用情况,

      给资源充足的worker上发送一条信息。让其创建一个executor进程,是一个线程池

      用来执行每一个task

      d、所有的executor都向TaskScheduler反向注册,TaskScheduler中一个executor列表

      e、任务调度---DAGScheduler切分job---分发TaskSet TaskScheduler

      f、TaskScheduler遍历TaskSet,把每一个task分发最优的executor执行

         注意:如果task执行失败,向TaskScheduler...(任务调度)

  • 相关阅读:
    npm ERR! code EINTEGRITY npm! ERR! shal-
    Python 的类的下划线命名有什么不同?
    Linux下通过源码编译安装程序
    Mac OSX下Sublime Text配置使用Ctags实现代码跳转
    Python基础-*args和**kwargs魔法变量
    alpha版、beta版、rc版的意思
    英特尔第四代酷睿处理器数字和字母代表什么意思
    笔记本CPU低压和标压有什么区别?
    MySQL通过localhost无法连接数据库的解决
    sudo:无法解析主机 解决方案
  • 原文地址:https://www.cnblogs.com/yangfanfan/p/11448740.html
Copyright © 2011-2022 走看看