Spark Shuffle Tracking 原理分析(1)

这篇具有很好参考价值的文章主要介绍了Spark Shuffle Tracking 原理分析(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果开启了 ESS,那么 Executor 计算完后,把 shuffle 数据交给 ESS, Executor 没有任务时,可以安全退出,下游任务从 ESS 拉取 shuffle 数据。

1. 背景

如果 Executor 执行了上游的 Shuffle Map Task 并且把 shuffle 数据些到本地。并且现在 Executor 没有 Task 运行,那么此 Executor 是否能销毁?

现状是如果 Executor 没有 active 的 shuffle 数据,则可以被销毁。
active shuffle 的定义:如果 Shuffle Map Stage 的 task 把 shuffle 数据输出到本地。如果依赖此 shuffle 的Stage 没有计算完毕,则称此 shuffle 为 active shuffle。因为依赖此 shuffle 的 Task 可能从 Driver 端获取了 MapStatus,但是还没有拉取完 shuffle 数据。

为了达到此目的,需要跟踪每个 Stage 和每个 Task 的运行信息。并且启动定时任务,定时扫描每个 Executor,判断是否有任务运行,是否有 active 的 shuffle,如果没有则可以退出。

退出有两种,如果开启了 decommission,则到期的 executors 进入 decommission 模式,否则执行 killExecutors。

参数配置

spark.dynamicAllocation.shuffleTracking.enabled: 默认 true,是否开启 shuffle tracking。
spark.dynamicAllocation.shuffleTracking.timeout: 默认 Long.MaxValue,

2. 设计

ExecutorMonitor 为每个 Executor 创建一个 Tracker, 用于跟踪此 Executor 的状态。

private val executors = new ConcurrentHashMap[String, Tracker]()

定时任务间隔时间查找 timeout 的 executor,然后处理。

timedOutExecutors 方法的主要逻辑,就是遍历 executors。如果 executor 没有 active 的 shuffle 并且当前时间大于 executor 的超时时间 timeoutAt,则此 executor 可以被安全释放。

为什么 executor 有 active shuffle 数据就不能 kill?
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式

  • Shuffle 的过程:
  1. MapTask 把 shuffle 写到本地,并且把状态汇报给 Driver.
  2. Reduce Task 从 Driver 获取 shuffle status,并从 shuffle status 获取每个 shuffle 数据的地址。
  3. 连接对应的 executor 获取 shuffle 数据。

如果在 reduce 获取完 shuffle status 后,MapTask 所在的 Executor 被 kill 掉,Reduce Task 就无法获取 shuffle 数据。

如果执行 decommission 逻辑,把 MapTask 的 shuffle 数据长传到 bos 等分布式存储是否可以?

也是不可以的,因为 reduce 可能已经把 shuffle status 拿走,获取的 shuffle status 没有记录 shuffle 数据在分布式存储上。

参考: ExecutorMonitor,ExecutorAllocationManager

Executor 状态的更新

ExecutorMonitor 实现了 SparkListner 接口,当 Job, Stage, Task 等 start 和 end 时,都会执行回调。

以 hasActiveShuffle 为例
每个 executor 用一个集合 shuffleIds 存储其上拥有的 shuffle 数据。 当其为空时,说明没有 shuffle 数据。

在 onTaskEnd 和 onBlockUpdated 时调用 addShuffle 向 shuffleIds 添加数据。

在以下时机删除 shuffleIds 里的数据。

  1. 依赖 driver 端的 ContextCleaner,当 ShuffleRDD 仅有 weakReference 时触发。
  2. rdd.cleanShuffleDependencies 方法,但是此方法仅在 org.apache.spark.ml.recommendation.ALS 使用。
timeoutAt 的计算逻辑

总结:timeoutAt 根据 idle 的时间,spark.dynamicAllocation.cachedExecutorIdleTimeout 和 spark.dynamicAllocation.shuffleTracking.timeout 这 3 个值中最大的值。

详细计算逻辑:
timeoutAt 在一些事件发生时触发计算,如 onBlockUpdated, onUnpersistRDD, updateRunningTasks, removeShuffle, updateActiveShuffles
timeoutAt 的计算逻辑:
当执行器有计算任务时 为 Long.MaxValue。
否则为 max(_cacheTimeout, _shuffleTimeout, idleTimeoutNs)
_cacheTimeout: 如果没有 cache 数据,为0,否则为参数 spark.dynamicAllocation.cachedExecutorIdleTimeout 的值(默认 Long.MaxValue)。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
Spark Shuffle Tracking 原理分析(1),2024年程序员学习,spark,大数据,分布式

学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-ivR6Vp6Z-1712860908338)]文章来源地址https://www.toymoban.com/news/detail-853131.html

到了这里,关于Spark Shuffle Tracking 原理分析(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【2023程序员必看】大数据行业分析

    【2023程序员必看】大数据行业分析

    1、政策重点扶持,市场前景广阔 2014年,大数据首次写入政府工作报告,大数据逐渐成为各级政府关注的热点。 2015年9月,国务院发布《促进大数据发展的行动纲要》,大数据正式上升至国家战略层面,十九大报告提出要推动大数据与实体经济的深度融合。 在2021年发布的“

    2024年02月08日
    浏览(9)
  • 《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著

    答案有文档形式,但是csdn必须要下载,,需要的人就去那里下载吧。《MySQL数据库原理、设计与应用》课后习题及答案黑马程序员编著 一、 填空题 1.关系型数据库的标准语言是_ SQL _。 2.数据库发展的3个阶段中,数据独立性最高的是_ 数据库系统 _阶段。 3.概念模型中的3种基

    2024年02月03日
    浏览(18)
  • 数据分析在程序员职业中的重要性及实践应用

    在当今信息化社会的快速发展中,数据分析已经成为一项重要的职业技能。不论是从事哪个行业,都需要具备一定的数据分析能力。对于程序员而言,掌握数据分析技能不仅能够提升自身在职场中的竞争力,更能够在职业生涯中获得更多的发展机会。本文将围绕数据分析在程

    2024年02月07日
    浏览(13)
  • GPT-4要革程序员的命?智能开发的理想与现实 | 爱分析调研

    GPT-4要革程序员的命?智能开发的理想与现实 | 爱分析调研

      “生成式人工智能(AIGC)将在三年内终结编程。” ——Matt Welsh,前哈佛大学计算机科学教授、Google 工程主管 GPT-4 也许还不完美,但智能开发时代真的来了 美国时间3月14日,OpenAI 正式发布 GPT-4,在 ChatGPT(GPT-3.5)的基础上,进一步升级了图像识别功能和高级推理技能,单

    2024年02月12日
    浏览(14)
  • Android SystemUI源码分析与修改,作为Android程序员应该怎样去规划自己的学习路线

    Android SystemUI源码分析与修改,作为Android程序员应该怎样去规划自己的学习路线

    systemui:keyCode=“4” android:layout_weight=“0” systemui:glowBackground=“@drawable/ic_sysbar_highlight” android:contentDescription=“@string/accessibility_back” / 音量减的布局如下,这里先把Visibility定义为Gone,然后在代码中控制是否显示: com.android.systemui.statusbar.policy.KeyButtonView android:id=“@+id/sub”

    2024年04月15日
    浏览(17)
  • 程序员岗位招聘信息数据可视化分析全屏大屏系统设计与实现(python的django框架)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月05日
    浏览(17)
  • 微软发布Fabric_Ai Copilot助力数据分析_一句话让他做数据挖掘和分析_数据分析师_设计师_程序员_真的要失业了吗---数据设计分析001

    微软发布Fabric_Ai Copilot助力数据分析_一句话让他做数据挖掘和分析_数据分析师_设计师_程序员_真的要失业了吗---数据设计分析001

    前段时间微软发布的AI Copilot,可以嵌入到Worldl,Excel,PPT中帮助进行智能的绘图,分析等操作, 今天~ Fabric 是自 SQL Server 以来最重要的数据平台创新,是对 Power BI 和分析平台最重要的扩展。 微软发布了一个东西,叫 Fabric。第一,它是一个彻底统一的分析平台,包括了:大数据,数据

    2024年02月11日
    浏览(20)
  • 【网安AIGC专题10.19】论文3代码生成:ChatGPT+自协作代码生成+角色扮演(分析员、程序员、测试员)+消融实验、用于MBPP+HumanEval数据集

    【网安AIGC专题10.19】论文3代码生成:ChatGPT+自协作代码生成+角色扮演(分析员、程序员、测试员)+消融实验、用于MBPP+HumanEval数据集

    Yihong Dong∗, Xue Jiang∗, Zhi Jin†, Ge Li† (Peking University) arXiv May 2023 arXiv 2023.4.15 https://arxiv.org/pdf/2304.07590.pdf 一位不愿意透露姓名的朋友分享了Self-collaboration Code Generation via ChatGPT《基于ChatGPT的自协作代码生成》 这篇论文是chatgpt的黑盒api调用,因此没有关于模型的微调等操作,

    2024年02月03日
    浏览(20)
  • 程序员简历程序员简历.pdf

    程序员简历程序员简历.pdf

    你们在制作简历时,是不是基本只关注两件事: 简历模板,还有基本信息的填写 。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“ 看起来最好看的模板 ”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象: 许多求职

    2024年04月14日
    浏览(17)
  • AI程序员对程序员的影响

    AI程序员对程序员的影响

    最近,全球首位AI程序员Devin的出现引发了广泛关注,也引发了人们对人工智能在编程领域的潜力和影响的讨论。尽管AI技术在编程领域得到广泛应用,但人们仍然在探讨它是否能完全取代人类程序员。本文将探讨AI程序员的优势、局限性以及对程序员职业的影响,并展望未来

    2024年03月23日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包