Spark 内部原理(上) – 计算引擎与调度管理

本文主要探讨spark计算引擎与调度管理的实现方式,包括spark计算引擎原理、spark调度管理原理、spark存储管理原理以及spark监控管理。

一:Spark计算引擎原理

Spark计算引擎的核心流程是从RDD创建DAG图,通过DAG图生成逻辑计划,划分Stage并生成Task,最后调度并执行这些Task以实现分布式计算。

Spark 内部原理(上) - 计算引擎与调度管理

上图清晰展示了从Job的action到中间调度再到具体执行的过程。以下通过一个实例详细解释:

Spark 内部原理(上) - 计算引擎与调度管理

我们启动spark-shell,读取本地文件并执行wordcount操作,统计行数。通过这个简单的Job操作,可以在Spark UI中观察到DAGScheduler的工作方式。

Spark 内部原理(上) - 计算引擎与调度管理

从图中可以看到,flatmap和map操作属于Stage0,而reducebykey操作则属于Stage1。Stage的划分依据是Shuffle或依赖关系。

接下来讨论Shuffle的概念。Shuffle是数据分类和聚合的过程,用于跨节点数据的聚合和归并操作。Shuffle是分布式计算框架的核心数据交换方式,其实现直接影响计算框架的性能和扩展性。Shuffle操作可能会降低数据计算的效率,因此Spark对Shuffle进行了逐步改进。

Spark Shuffle分为两个阶段:write阶段和read阶段。

Spark Shuffle Write阶段

Write阶段有两种方式:Hash-based和Sort-based。

Hash-based是早期Spark版本使用的Shuffle write方式。

Hash-based实现结构图(摘自网络):

Spark 内部原理(上) - 计算引擎与调度管理

如图所示,每个Task计算完后,结果集存储到本地文件中,Shuffle操作时会产生M*N条连接。如果bucket数量多,会消耗大量资源。因此,Spark后来采用了Sort-based方式。

Sort-based实现结构图(摘自网络):

Spark 内部原理(上) - 计算引擎与调度管理

每个Task计算完后生成一个文件,结果集追加到该文件中,同时有一个索引文件记录数据位置,减少了连接数量。

Spark Shuffle Read阶段

在Shuffle操作中,Spark内部隐式创建了一个transformation操作用于Shuffle。

Shuffle read结构图(摘自网络):

Spark 内部原理(上) - 计算引擎与调度管理

Shuffle read阶段,Spark内部使用BlockStoreShuffleFetcher获取数据,之后获取meta信息并存入Set中。如果数据在本地,直接通过BlockManager.getBlockData读取;如果数据在远程Executor中,则通过NettyBlockTransferService.fetchBlocks获取。

卡奥斯智能交互引擎 卡奥斯智能交互引擎

聚焦工业领域的AI搜索引擎工具

卡奥斯智能交互引擎 36 查看详情 卡奥斯智能交互引擎

(关于Spark Shuffle的详细内容将在后续章节中详细介绍,这里就不再赘述。)

二:Spark调度管理原理

Spark调度管理系统是Spark程序运行的核心,其中作业调度是调度管理模块的关键。调度的前提是判断多个作业任务的依赖关系(Stage),任务之间存在因果依赖关系,有些任务必须先执行,相关依赖的任务才能执行,任务之间不能出现循环依赖,本质上是DAG图。

作业调度相关类型,以DAGScheduler为核心。

Spark调度相关概念:

Task(任务):单个分区数据集上的最小处理单元。TaskSet(任务集):有一组关联但互相没有Shuffle依赖关系的任务组成。Stage(调度阶段):一个任务集对应的调度阶段。Job(作业):由一个RDD Action生成的一个或多个调度阶段所组成的一次计算作业。Application(应用程序):Spark应用程序,由一个或多个作业组成。

Spark调度相关概念逻辑关系图:

Spark 内部原理(上) - 计算引擎与调度管理

Spark作业调度顶层逻辑:

每个RDD Action类型的算子内部都是一次隐式的作业提交。DAGScheduler的主要任务是计算作业和任务的依赖关系,制定调度逻辑。DAGScheduler在SparkContext初始化过程中被实例化,一个SparkContext应创建一个DAGScheduler。DAGScheduler内部维护着各种“任务/调度阶段/作业”的状态互相之间的映射表,用于在任务状态、集群状态更新时,能够正确维护作业的运行逻辑。

Spark作业调度流程图:

Spark 内部原理(上) - 计算引擎与调度管理

Spark作业调度交互流程:

Spark 内部原理(上) - 计算引擎与调度管理

Spark作业调度-调度阶段的拆分:

当一个RDD操作触发计算,向DAGScheduler提交作业时,DAGScheduler需要从RDD依赖链的末端RDD出发,遍历整个RDD依赖链,划分调度阶段,并决定各个调度阶段之间的依赖关系。调度阶段的划分是以ShuffleDependency为依据,即当某个RDD的运算需要Shuffle操作时,整个包含了Shuffle依赖关系的RDD将被用作输入信息,构建一个新的调度阶段。

Spark作业调度-finalStage的提交:

在划分调度阶段的步骤中会得到一个或多个有依赖关系的调度阶段,其中直接触发RDD关联的调度阶段称为FinalStage。然后DAGScheduler进一步从这个FinalStage生成一个作业实例,这两者的关系进一步存储在映射表中,用于在该调度阶段全部完成后做一些后续处理,比如状态报告、清理作业相关数据等。

Spark作业调度-状态监控&任务结果获取:

DAGScheduler对外暴露了一系列的回调函数,对于TaskScheduler而言,这些回调函数主要包括任务的开始、结束、失败,任务集的失败。DAGScheduler根据这些任务的生命周期进一步维护作业和调度阶段的状态信息。

Spark作业调度-任务结果获取:

一个具体任务在Executor中执行完毕后,其结果需要以某种形式返回给DAGScheduler。根据调度的方式不同,返回的方式也不同。对于FinalStage所对应的任务,返回给DAGScheduler的是运算结果本身,而对于中间调度阶段对应的任务ShuffleMapTask,返回给DAGScheduler的是一个MapStatus对象,MapStatus对象管理了ShuffleMapTask的运算输出结果在BlockManager里的项目存储信息,而非结果本身。根据任务结果的大小不同,ResultTask返回的结果分为两类,如果结果足够小,则直接放在DirectTaskResult对象内,如果超过特定尺寸,则在Executor端会将DirectTaskResult先序列化,再把序列化的结果作为一个数据块存放在BlockManager中,然后将BlockManager返回的BlockID放在IndirectTaskResult对象中,返回给TaskScheduler。TaskScheduler进而调用TaskResultGetter将IndirectTaskResult中的BlockID取出并通过BlockManager最终取得对应的DirectTaskResult。

Spark作业调度总结:

Spark的调度管理是Spark作业运行和资源分配的核心,调度的层次依次是底层计算资源、任务调度、作业调度、应用调度。了解这些层次之间的逻辑关系,可以更方便地对Spark的运行状态进行监控以及对集群进行配置优化。

以上就是Spark 内部原理(上) – 计算引擎与调度管理的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/463409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 04:23:30
下一篇 2025年11月8日 04:24:05

相关推荐

  • 5张图表带你看懂当前比特币市场现状

    比特币价格已从 10 月 6 日创下的 12.6 万美元历史高点大幅回落,跌幅接近 30%。今年以来的累计涨幅已被完全抹去,转为负值,过去一年的回报率也降至不足 1%。面对如此表现,投资者情绪普遍低迷。 Binance币安 欧易OKX ️ Huobi火币️ 市场悲观情绪蔓延,社交媒体平台如 Redd…

    2025年12月9日 好文分享
    000
  • 哪些指标评估SOL币价值?长期持有需注意什么?

    SOL币价值取决于链上活跃度、经济模型、技术稳定性、生态发展与市场情绪。持续增长的DAU、高交易量与稳定币流入反映使用需求;质押率高显示网络安全性强,但需警惕收益率过高带来的中心化风险;历史宕机频发但近期运行稳定,FireDancer升级提升性能;TVL增长与开发者活跃支撑长期生态,NFT市场份额变…

    2025年12月9日
    000
  • SOL币的TPS优势是什么?如何应对潜在拥堵问题?

    SOL币依托Solana公链,凭借历史证明(PoH)与权益证明(PoS)结合、Turbine数据分发、Sealevel并行处理等技术,实现高达65,000 TPS的交易速度,支持高频交易与大规模应用;面对潜在拥堵,可通过升级FireDancer客户端、使用Jito协议支付优先费、错峰交易及采用链下订…

    2025年12月9日
    000
  • 狗狗币:DOGE在2027年飙升至2美元的4大驱动因素

    分析显示,狗狗币在2027年存在冲击2美元的潜力,主要受多重因素共同推动。 一、ETF监管突破与机构合规化布局 美国证券交易委员会(SEC)对模因币类资产的监管态度正逐步明朗,Grayscale等主流机构已提交DOGE现货ETF申请。若获批,将开启大规模合规资金入口。 1、关注SEC在2026年底至…

    2025年12月9日
    000
  • ETH以太坊未来展望:价格趋势与应用场景预测

    以太坊价格受技术发展影响显著,通过分析链上数据、Layer 2生态扩张、协议升级及机构持仓可判断其长期趋势:大型地址动向与交易所净流出反映持有意愿;L2 TVL与活跃度提升表明扩展性改善;核心协议升级推进效率优化;机构增持则预示资金持续布局。 以太坊作为智能合约平台,其价格与技术发展紧密相关。当前市…

    2025年12月9日
    000
  • 狗狗币起源故事:从 meme 到主流的5个关键里程碑

    狗狗币起源于2013年作为讽刺山寨币的迷因项目,由IBM与Adobe员工共同创建,分叉自莱特币并采用柴犬表情包为标志,在Reddit等社区推动下形成打赏与慈善生态。其价值核心在于活跃的草根社区,自发组织冬奥会资助等慈善活动,并通过社交媒体小费机制建立良性互动。埃隆·马斯克多次公开支持,称其为“最喜欢…

    2025年12月9日
    000
  • 全面剖析:狗狗币的诞生历程、技术演进与市场潜力

    %ignore_a_1%以社区文化为核心,通过技术升级提升性能,采用通胀模型促进流通,获多国支付认可并拓展实际应用。 狗狗币(DOGE)作为最具代表性的模因币,其发展融合了社区文化、技术迭代与市场情绪。 Binance币安交易所 Binance币安注册入口: Binance币安APP下载: 欧易OK…

    2025年12月9日
    100
  • 如何识别一个项目社区的真实活跃度?警惕机器人刷屏的假象

    项目社区活跃度需多维度验证真伪。首先分析发言内容质量,筛选24小时内消息,识别重复短语如“HODL”,缺乏上下文讨论的多为机器人;真实互动应围绕技术、市场展开。其次统计发言频率分布,导出发言排行榜,若前10%用户贡献超80%消息量,或新账号集中注册后高频发帖,可能存在刷屏行为。第三追踪用户生命周期,…

    2025年12月9日
    000
  • 狗狗币发展脉络:早期创新到如今的全球影响力

    狗狗币凭借社区文化、技术优化和关键人物推动发展。1、活跃社区通过社交平台传播模因、组织慈善、推广打赏;2、技术上采用Scrypt算法、1分钟确认、石墨烯协议提升性能;3、拓展合规支付场景,获欧盟等地许可,接入电商与X平台;4、马斯克等人物言论显著影响市场情绪与价格波动。 狗狗币自2013年诞生以来,…

    2025年12月9日
    000
  • meme币跨界预测:NFT融合驱动的2027年价格爆发点

    1、通过链上数据分析工具追踪MEME币持有者与NFT收藏者的地址重叠,识别资金流动模式;2、监测去中心化平台中MEME-NFT交易对的流动性变化,判断跨界价值通道激活情况;3、跟踪项目方联合空投事件,参与双生态激励活动以获取早期红利。 binance币安交易所 Binance币安注册入口: Bina…

    2025年12月9日
    000
  • 如何评估一个DeFi协议的安全性?避免资金被盗的六个要点

    评估DeFi协议安全性需综合技术审计、代码开源、团队透明、流动性分布、社区反馈与实时监控。1、查看CertiK等权威机构的完整审计报告,确认无未修复高危漏洞;2、通过Etherscan验证合约是否开源且代码一致;3、核查团队成员公开信息及治理机制以降低欺诈风险;4、利用DeBank分析流动性池,警惕…

    2025年12月9日
    000
  • 波卡币涨了多久跌的?波卡币2026年涨势预测

    波卡币价格受市场情绪、技术升级和监管等因素影响。其历史走势显示,2021年因跨链互操作性预期达历史高点,随后经历回调,价格波动显著,反映加密市场整体趋势及生态系统发展动态。 1、欧易okx 欧易okx官网入口: 欧易okxAPP下载链接: 2、币安Binance 币安Binance官网入口: 币安B…

    2025年12月9日
    000
  • 链链接每天结算点在哪?链链接每日结算时间分析

    链链接每日结算时间可通过官方渠道、链上数据和社区经验获取。首先查看官网公告、Telegram置顶消息及推特动态,获取官方发布时间;其次利用区块链浏览器追踪合约交易记录,分析“settle”类交易的时间戳,找出规律性周期;最后参考Reddit、币圈论坛等平台用户反馈,统计高频到账时段并排除异常延迟,综…

    2025年12月9日
    000
  • 什么是Monad(MON)及其运作方式?

    monad是一个备受瞩目的高性能layer 1区块链项目,它完全兼容以太坊虚拟机(evm),旨在通过并行执行技术大幅提升交易处理速度,解决现有区块链的性能瓶颈问题。 Monad的核心技术 1、并行执行(Parallel Execution):这是Monad最关键的创新。它允许系统同时处理多笔互不冲突…

    2025年12月9日
    000
  • 什么是Allora(ALLO)币?是好投资吗?Allora代币功能、代币经济和主要特点

    allora network 允许开发者构建去中心化的 ai 应用,创建可盈利的 ml 模型,并为网络的集体智慧做出贡献。 Binance币安 欧易OKX ️ Huobi火币️ Allora Network是什么? Allora Labs(前身为 Upshot)专注于 NFT 评估领域。该项目于今年…

    2025年12月9日
    000
  • Arthur Hayes 表示,Zcash已成为其家族办公室继比特币(BTC)之后的第二大持有资产

    爆炸行情!zec 创新高,隐私币热潮强势回归 最近,Zcash(ZEC)迎来史诗级爆发——价格在短短一个月内飙升超过400%,从低点137美元一度冲破730美元大关,创下自2018年以来的最高纪录!?尽管随后出现回调,目前交易价约为548美元,24小时内下跌约11.8%,但市场热度丝毫未减。据Coi…

    2025年12月9日
    000
  • Credit Blockchain推出AI驱动智能金融平台,融合AI与区块链创新

    Credit Blockchain近日宣布推出基于人工智能的智能金融平台,该平台融合了AI技术与区块链创新,旨在提升金融服务效率、优化风险管理,并为数字资产交易提供智能化解决方案。 平台特点与创新 该智能金融平台主要优势包括: AI驱动风险分析:实时监控市场数据,识别潜在风险并优化投资决策。智能资产…

    2025年12月9日
    000
  • Solana生态DeFi项目大盘点:详解5大DEX的优劣与机会

    solana凭借其高性能和低成本的优势,孕育了繁荣的defi生态,其中去中心化交易所(dex)是绝对的核心。本文将深入剖析solana生态中几个主流dex的特点、优劣以及其中蕴藏的机会。 Raydium:老牌AMM与流动性中心 1、作为Solana生态最早期的DEX之一,Raydium深度集成了已没…

    2025年12月9日
    000
  • 加密市场大回调,牛回头还是牛跑了?何时再次开启牛市?

    11月才刚过四天,加密市场就经历了显着回调,比特币过去一个月下跌近13%,从此前的高点回落至10.4万美元附近,价格反复震荡。eth交易价格同期下跌近 20%。面对这轮回调,市场情绪普遍处于焦虑,纷纷喊着是不是底了?彻底转熊了?究竟这次回调是真正的触顶回落,还是市场或许正处于黎明前的黑暗? Bina…

    2025年12月9日
    000
  • Decred (DCR)币是什么?如何运作?代币经济学以及2025 年、2026 年价格预测

    来源:CoinMarketCap Decred Crypto是什么? ‍ Decred 加密货币(DCR)是一种以自治、安全和去中心化治理为核心的创新型数字货币。自2016年2月正式发布以来,Decred致力于解决早期区块链系统中普遍存在的中心化问题,尤其是在决策机制和资金分配方面。它通过链上投票与…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信