TaskScheduler 是什么?有什么作用?

TaskScheduler 是什么?有什么作用?前言本文隶属于专栏 1000 个问题搞定大数据技术体系 该专栏为笔者原创 引用请注明来源 不足和错误之处请在评论区帮忙指出 谢谢 本专栏目录结构和参考文献请见 1000 个问题搞定大数据技术体系正文 TaskSchedule 的核心任务是提交 TaskSet 到集群运算并汇报结果 1 为 TaskSet 创建和维护一个 TaskSetManag 并追踪任务的本地性以及错误信息 2 遇到 Straggle 任务时 会放到其他节点进行重试 3 向 DAGScheduler

前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

TaskScheduler 的核心任务是提交 TaskSet 到集群运算并汇报结果。

( 1 )为 TaskSet 创建和维护一个 TaskSetManager ,并追踪任务的本地性以及错误信息。

( 2 )遇到 Straggle 任务时,会放到其他节点进行重试。

( 3 )向 DAGScheduler 汇报执行情况,包括在 Shuffle 输出丢失的时候报告 fetch failed 错误等信息。

TaskScheduler 源码类注释 (3.2.0-SNAPSHOT)

/ * 低层次的任务调度器接口,目前由 TaskSchedulerImpl 独家实现。 * * 此接口允许插入不同的任务调度程序。 * * 每个 TaskScheduler 为单个 SparkContext 安排任务。 * * 这些调度器从每个阶段的 DAGScheduler 中获取提交给它们的任务集,并负责将任务发送到集群、运行它们、在出现故障时重试以及减轻 straggle。 * * 它们将事件返回给 DAGScheduler。 */ private[spark] trait TaskScheduler 

TaskSchedulerImpl 源码类注释 (3.2.0-SNAPSHOT)

/ * 通过 SchedulerBackend 为多种类型的集群调度任务。 * * 它还可以通过使用 LocalSchedulerBackend 并将 isLocal 设置为true来使用本地设置。 * * 它处理常见的逻辑,如确定作业之间的调度顺序、唤醒以启动推测性任务等。 * * 客户端应该首先调用initialize() 和start(),然后通过 submitTasks 方法提交任务集。 * * 线程:SchedulerBackends 和任务提交客户端可以从多个线程调用此类,因此它需要公共API方法中的锁来维护其状态。 * * 另外,一些 SchedulerBackends 要在这里发送事件时会自动同步,然后获取对我们的锁定,因此我们需要确保在锁定自己时不会尝试锁定后端。 * * 这个类是从许多线程调用的,特别是: * * * The DAGScheduler Event Loop * * The RPCHandler threads, 用来响应 Executors 的状态更新。 * * 周期性地恢复来自 CoarseGrainedSchedulerBackend 的所有供给,以适应延迟调度 * * task-result-getter threads * * 注意:Spark-RPC 框架中抛出的任何非致命异常都可能被吞没。 * * 因此,在resourceOffers、statusUpdate 等方法中引发异常不会使应用程序失败,但可能导致未定义的行为。 * * 相反,我们应该使用类似 TaskSetManger.abort() 的方法中止一个阶段,然后使应用程序失败(SPARK-31485)。 * * 延迟调度:延迟调度是一种为了提高集群和工作负载吞吐量而牺牲数据局部性的作业公平性的优化。 * * “延迟”的一个有意义的定义是自任务集使用其公平的资源份额以来经过了多少时间。 * * 由于在没有完全模拟的情况下计算此延迟是不切实际的,因此使用的启发式方法是 TaskSetManager 上次启动任务后的时间, * * 并且自上次提供其“公平份额”以来,没有因延迟调度而拒绝任何资源。 * * 当 resourceOffers 的参数“isAllFreeResources”设置为true时,启用“公平共享”。 * * “延迟调度拒绝”是指尽管存在挂起的任务(在TaskSetManager中实现),但资源未被利用的情况。 * * 传统的启发式方法只测量 TaskSetManager 上次启动任务以来的时间,可以通过将 spark.locality.wait.legacyResetOnTaskLaunch 设置为 true 来重新启用。 */ private[spark] class TaskSchedulerImpl 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2026年3月19日 下午2:21
下一篇 2026年3月19日 下午2:22


相关推荐

  • mysql bcp_bcp用法

    mysql bcp_bcp用法BCP 是 SQLServer 中负责导入导出数据的一个命令行工具 它是基于 DB Library 的 并且能以并行的方式高效地导入导出大批量的数据 BCP 可以将数据库的表或视图直接导出 也能通过 SELECTFROM 语句对表或视图进行过滤后导出 在导入导出数据时 可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中 下面将详细讨论如何利用 BCP 导入导出数据 1 BCP

    2026年3月19日
    1
  • Window Apply,Process Function,ReduceFunction,AggregateFunction分析

    Window Apply,Process Function,ReduceFunction,AggregateFunction分析本文全部来源于官方文档解释 WindowApply WindowedStre DataStream AllWindowedS DataStream Appliesagene Belowisafunc 解释 将一个通用的函数应用到整个窗口 可见 apply 用于窗口函数之后 举例

    2026年3月18日
    2
  • DES算法详细设计

    DES算法详细设计一 DES 算法原理概述 DES 算法为密码体制中的对称密码体制 又被称为美国数据加密标准 是 1972 年美国 IBM 公司研制的对称密码体制加密算法 明文按 64 位进行分组 密钥长 64 位 密钥事实上是 56 位参与 DES 运算 第 8 16 24 32 40 48 56 64 位是校验位 使得每个密钥都有奇数个 1 分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组的加密方法 DES 是一种分组密码 是两

    2025年8月18日
    5
  • 威尔逊置信区间算法

    威尔逊置信区间算法此算法的基础是以用户对某种抉择的二项性为基础 每条可记录的数据都是 0 1 的独立事件 符合泊松分布 于是该类数据很容易归类于二项分布里 二项分布计算置信区间有多种计算公式 最常见的是 正太区间 Normalapprox 但它只适用于样本较多的情况 np gt 5 且 n 1 p gt 5 对于小样本 它的准确性很差 Wilson 算法正是解决了

    2026年3月16日
    2
  • Xmind激活码(xmind破解版)

    这个方法我也是找了挺久才找到的,供个人借鉴和使用,但不能用于商业用途!本人的电脑系统是:MicrosoftWindows10家庭中文版一、安装软件压缩包解压后有一个文件“xmind-8-update9-windows.exe”,这是从官网上下载的安装包,没有任何改动,大家可以放心使用。该方法适用这个版本,更新后的版本没测试。二、打开安装路径找到XMind.ini文件用记事本等可以编辑文件的打开该文件在最后一行加上↓-javaagent:C:\ProgramFiles(x86)\XM

    2022年4月17日
    6.2K
  • 智谱发布开源视觉推理模型GLM-4.5V,刷新41项多模态推理SOTA

    智谱发布开源视觉推理模型GLM-4.5V,刷新41项多模态推理SOTA

    2026年3月12日
    3

发表回复

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

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