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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL语句查询语句完整语法

    SQL语句查询语句完整语法数据库是 mysql 使用的数据库表名称是 my student 表的完整数据信息是 完整语法是 Select select 选项 字段列表 字段别名 from 数据源 where 字句 groupby 子句 having 子句 orderby 子句 limit 子句 select 选项 Select 选项包含 ALL 所有 默认 dis

    2025年10月6日
    3
  • SSDP协议的Python示例「建议收藏」

    SSDP协议的Python示例「建议收藏」废话少说,直接上代码。服务端ssdp_server.py

    2022年10月11日
    2
  • 数据挖掘之异常点检测「建议收藏」

    数据挖掘之异常点检测「建议收藏」异常点检测方法一、基本概念  异常对象被称作离群点。异常检测也称偏差检测和例外挖掘。  常见的异常成因:数据来源于不同的类(异常对象来自于一个与大多数数据对象源(类)不同的源(类)的思想),自然变异,以及数据测量或收集误差。  异常检测的方法:(1)基于模型的技术:首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇

    2022年7月16日
    15
  • 网络推广100种方法有哪些_100种宣传方式

    网络推广100种方法有哪些_100种宣传方式一米软件发现网上很多人都在找网络推广100种方法,但 其实网站推广并不是方法越多越好,而是找到适合自己的方法为宜,下面一米软件就来给大家介绍下一些常用网站推广的方法。1、搜索引擎营销搜索引擎营销,这种方法一般是通过自建官网然后针对官网进行优化与更新,使得网站在搜索引擎中有一个好的排名。也有通过做付费推广,使得网站的某个关键词在搜索引擎中有个好的排名。2、自媒…

    2022年4月20日
    192
  • java集合类面试题

    java集合类面试题java集合类面试题1.请聊一下java的集合类,以及在实际项目中你是如何用的?注意说出集合体系,常用类,接口,实现类加上你所知道的高并发集合类,JUC在实际项目中引用,照实说就好了2.集合类是怎么解决高并发中的问题?线程非全的集合类ArrayListLinkedListHashSetTreeSetHashMapTreeMap实际开发中我们自己用这样的集合最多,因为一般我们自己写的业务代码中,不太涉及到多线程共享同一个集合的问题线程安全的集合类VectorHashTable

    2022年7月9日
    21
  • Java安全之jar包调试技巧

    Java安全之jar包调试技巧调试程序首先还是创建一个工程,将jar包导入进来调试模式的参数启动中需要加入特定参数才能使用debug模式,并且需要开放调试端口JDK5-8:-agentli

    2021年12月12日
    50

发表回复

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

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