Spark pool_spark docker

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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)
上一篇 2022年8月4日 下午2:16
下一篇 2022年8月4日 下午2:16


相关推荐

  • SkipList 跳表的原理以及实现

    SkipList 跳表的原理以及实现

    2022年2月20日
    40
  • Watcher分集介绍(Weight Watcher)

    TextWatcher是packageandroid.text包下的一个接口。这个接口继承了另外一个接口NoCopySpan。TextWatcher接口里主要是定义了三个抽象方法:下面是它的基本用法:TextWatcherfieldValidatorTextWatcher=newTextWatcher(){      @Override   

    2022年4月18日
    244
  • 11尺寸长宽 iphone_iPhone11屏幕尺寸

    11尺寸长宽 iphone_iPhone11屏幕尺寸【iPhone11屏幕尺寸】iPhone11系列屏幕继续沿用“全面屏”设计,由苹果初代手机开始,iPhone的屏占比越做越高,同时屏幕尺寸越做越大。iPhone11屏幕尺寸是多少呢?我们一起来看看吧。iPhone11屏幕尺寸iPhone11屏幕采用6.1英寸1792*828分辨率全面屏,屏幕像素密度为326ppi,最大亮度可达625尼特,材质为LCD面板。iPhone11Pro屏幕采用5.8英寸2…

    2022年5月15日
    73
  • Apache Tomcat 安装配置图文详细教程[通俗易懂]

    Apache Tomcat 安装配置图文详细教程[通俗易懂]一、安装JDK步骤及配置JDK环境变量步骤省略。二、安装Tomcat(提前请先安装JDK)1.下载好压缩包后,直接解压至某一目录下,目录中不能包含中文。解压后如图所示:2.将此文件夹拷贝到你常用的根目录下。这样就算安装好了!3.接下来开始配置环境变量,打开环境变量同上操作,不在赘述。然后新建一个系统变量:TOMCAT_HOME=C:\Java\Tomcat\apache-tomcat-7.0.90…

    2022年6月9日
    46
  • JavaScript之正则表达式的使用方法详细介绍[通俗易懂]

    JavaScript之正则表达式的使用方法详细介绍[通俗易懂]首先必须说明的是,这类文章(js正则表达式)在c站或者整个it类论坛是很多人写过的,而我认为我这篇的不同之处在于更加“小白”化,这也与我一贯的风格有关吧。关于JavaScript正则表达式,其他的文章大多一上来就太过激进,不利于初学者学习(我当粗就是这么被劝退的),这也是我为什么要坚持写这篇文章,希望小白在看了这篇文章后,不管能不能完全掌握JavaScript正则表达式,但至少对JavaScript正则表达式能有一个比较深刻的印象吧。

    2025年8月5日
    7
  • 科大讯飞推星火AIPC,豪签6大巨头,9.73亿资金却在悄悄流出?

    科大讯飞推星火AIPC,豪签6大巨头,9.73亿资金却在悄悄流出?

    2026年3月14日
    2

发表回复

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

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