Spark系列(七)Master中的资源调度

资源调度

Spark系列(七)Master中的资源调度

说明:

Application的调度算法有两种,分别为spreadOutApps和非spreadOutApps

spreadOutApps

  • 在spark-submit脚本中,可以指定要多少个executor,executor需要多少个cpu及多少内存,基于该机制,最后executor的实际数量,以及每个executor的cpu可能与配置是不一样的。
  • 因为spreadOutApps调度算法的总是基于总CPU总和来分配,比如要求3个executor每个要3个CPU,如果有9个worker每个有1个CPU,因为总共要分配9个core,所以每个worker分配一个core然后每个worker启动一个executor
  • 最后启动9个executor每个executor1个cput core

非spreadOutApps

  • 每个application都尽可能分配到尽量少的worker上,比如总共有10个worker,每个有10个core app总共要分配20个core,那么其实只会分配到两个worker上,每个worker都占满10个core.

 

Schdule方法源码分析

16   
17 
24 
28 
55 
60 
62  ) {
89                // 根据WorkerInfo和所需的core构建ExecutorDesc
90                val exec = app.addExecutor(worker, coresToUse)
91                // 启动Executor
92                launchExecutor(worker, exec)
93                app.state = ApplicationState.RUNNING
94              }
95            }
96          }
97        }
98      }
99    }
上一篇:Common 通用类库


下一篇:使用C#开发屏幕保护程序步骤