Spark pool_spark docker

Spark pool_spark docker概述这篇文章主要是分析一下Pool这个任务调度的队列。整体代码量也不是很大,正好可以详细的分析一下,前面在TaskSchedulerImpl提到大体的功能,这个点在丰富一下吧。DAGSchedul


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

概述

这篇文章主要是分析一下Pool这个任务调度的队列。整体代码量也不是很大,正好可以详细的分析一下,前面在TaskSchedulerImpl提到大体的功能,这个点在丰富一下吧。

DAGScheduler负责构建具有依赖关系的任务集,TaskSetManger负责在具体的任务集内部调度任务,而TaskScheduler负责将资源提供给TaskSetManger供其作为调度任务的依据,但是每个sparkContext可能同时存在多个可运行的任务集,因此需要调度池pool来进行协调管理。

初始化源码解析

Spark pool_spark docker

poolname:名字

schedulingMode:调度模式,FAIR(公平调度),FIFO,默认是FIFO的方式。

initWeight:调度池权重

initMinShare:计算资源中的cpu核数

先看一下扩展类Schedulable,Scheduler是一个特征类,pool是其具体的实现.

Spark pool_spark docker

val schedulableQueue = new ConcurrentLinkedQueue[Schedulable]   调度队列
val schedulableNameToSchedulable = new ConcurrentHashMap[String, Schedulable] 调度对应关系
var weight = initWeight 调度池权重
var minShare = initMinShare 计算资源中的cpu核数
var runningTasks = 0   正在运行的task数量
var priority = 0    优先级
var stageId = -1  池的阶段id用于在调度中中断绑定
var name = poolName  调度池名字
var parent: Pool = null

Spark pool_spark docker

调度算法,根据调度模式初始化算法。org.apache.spark.scheduler.SchedulingAlgorithm。
调度池则用于调度每个sparkContext运行时并存的多个互相独立无依赖关系的任务集。
调度池负责管理下一级的调度池和TaskSetManager对象。
用户可以通过配置文件定义调度池和TaskSetManager对象。
  1.调度的模式Scheduling mode:用户可以设置FIFO或者FAIR调度方式。
  2.weight,调度的权重,在获取集群资源上权重高的可以获取多个资源。
  3.miniShare:代表计算资源中的cpu核数。
配置conf/faurscheduler.xml配置调度池的属性,同时要在sparkConf对象中配置属性。

方法解析

TaskSchedulerImpl在初始化过程中会根据用户设定的SchedulingMode(默认是FIFO)创建一个rootPool根调度池,之后根据具体的调度模式再进一步创建ScheduleBuilder对象,具体的ScheduleBuilder对象的BuildPools方法将在rootPool的基础上完成整个Pool的构建工作,之后就有通过addSchedulable将taskSetManger和pool关联起来了。

Schedulable有两个类,一个是pool,一个是TaskSetManager。

Spark pool_spark docker

Pool直接管理的是TaskSetManager,每个TaskSetManager创建时都存储了其对应的StageID.

Spark pool_spark docker

具体的调度算法,等以后的文章在做详细分析吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167904.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PotPlayer安装与配置[通俗易懂]

    PotPlayer安装与配置[通俗易懂]目录1.简介2.安装3.设置基本选项设置:播放选项设置:PotPlayer皮肤设置:1.简介PotPlayer一款小巧简单的视频播放软件,具有于强大的定制能力和个性化功能。2.安装官网下载potplayerhttp://potplayer.daum.net/?lang=zh_CN下载完成后双击安装即可,选项默认。3.设置首先打开软件,按…

    2022年5月21日
  • 项目开发序言「建议收藏」

    项目开发序言「建议收藏」今天决定换成uni-app来开发。用到的工具:HBuilder +微信开发者工具 + 小程序appid1.功能概述 消费者端:分为首页、商城、我的 首页:banner广告展示、菜品预览 商城:banner广告展示、全部商品、热销商品、公益、非遗 我的:积分和信用分的展示、我的兑换、今日签到、设置 商家端:功能、我的 功能:…

    2022年8月18日
  • 解读滑块验证码(滑动验证码)与图形验证码的破解难度

    解读滑块验证码(滑动验证码)与图形验证码的破解难度

    2021年6月7日
  • 矩阵范数不等式_范数三角不等式取等号

    矩阵范数不等式_范数三角不等式取等号矩阵范数不等式∣∣A∣∣2≤∣∣A∣∣1∣∣A∣∣∞||A||_2\le||A||_1||A||_{\infty}∣∣A∣∣2​≤∣∣A∣∣1​∣∣A∣∣∞​证明引理1严格对角占优的矩阵行列式为正n维实矩阵A,满足aii>∑1≤j≤n,j≠i∣aij∣a_{ii}\gt\sum_{1\lej\len,j\nei}|a_{ij}|aii​>1≤j≤n,j​=i∑​∣aij​∣则称A为严格对角占优的矩阵,而∣A∣>0|A|>0∣A∣>0引理1的证

    2022年9月19日
  • laravel拓展validator验证

    laravel拓展validator验证

    2021年10月26日
  • Java 中常见的 RPC 协议

    Java 中常见的 RPC 协议hessian(Dubbo使用的是dubbo协议是优化过的hessian协议)thrift(apache提供的跨语言的rpc协议)protobuf(google提供的跨语言的rpc协议)

    2022年5月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号