当前位置: 首页 > article >正文

讲一下Spark的shuffle过程

首先Spark的shuffle是Spark分布式集群计算的核心。
Spark的shuffle可以从shuffle的阶段划分,shuffle数据存储,shuffle的数据拉取三个方面进行讲解。

首先shuffle的阶段分为shuffle的shuffle write阶段和shuffle read阶段。shuffle write的触发条件就是上游的Stage任务shuffle Map Task完成计算后,会哪找下游Stage的分区规则重新分区,shuffle的操作逻辑就每个shuffl map task将数据按目标分区写入本地磁盘,生成shuffle 中间文件。
shuffle read的出发条件就是下游的result Stage任务运行Result task任务启动的时候,需要从上游节点拉取属于自己分区的数据,拉取数据后,shuffle read可能哪找操作的指令进行reduceByKey,或者sortByKey等操作。

然后shuflle的中间文件结果的存储是通过shuffle manager管理,默认使用SortshuffleManaer,存储方式就是每个shuffle Map Task会生存一个文件,包含所有分区的数据,然后附带一个记录文件各个分区的偏移量,然后我们默认使用的SortShuffleManager会自动的对文件额索引文件进行合并处理,减少文件数量,降低磁盘的IO压力,从而提高shuffle效率。

然后第三个就是数据的拉取阶段,是通过readSuffle从各个节点去拉群。首先Driver中的MapOutputTraver记录所有ShuffelMapTak的任务,下游Task想Tractorcah查询目标数据位置,然后进行拉群,拉去后就会进行数据处理,一般都是在内存当中进行处理,如果内存不足,就会溢写出到磁盘当中。


http://www.kler.cn/a/570310.html

相关文章:

  • 最节省成本的架构方案:无服务器架构
  • Redis存储⑮Redis的应用_分布式锁_Lua脚本/Redlock算法
  • 【FPGA】——verilog实现四位全加器和三八译码器
  • 使用shell脚本读elasticsearch,写msyql
  • 系统架构设计师—计算机基础篇—计算机网络
  • 对比 ThinkPHP 中间件 和 Java AOP
  • 《论云原生架构及其应用》审题技巧 - 系统架构设计师
  • Django 5实用指南(十三)安全性与防护
  • 字符串--子串匹配
  • 【Linux学习笔记】Linux基本指令及其发展史分析
  • 人工智能大模型在物联网应用层上的应用
  • MCP与RAG:增强大型语言模型的两种路径
  • 【星云 Orbit • STM32F4】04.一触即发:GPIO 外部中断
  • 网络问题排查基本命令
  • Android Studio 新版本Gradle通过JitPack发布Maven仓库示例
  • SpringBoot读取properties中文乱码解决方案
  • 【通俗讲解电子电路】——从零开始理解生活中的电路(三)
  • element-push el-date-picker日期时间选择器,禁用可选中的时间 精确到分钟
  • 迷你世界脚本游戏接口:Game
  • 【C语言】联合体妙用之:数据类型转换