Spark内核

环境准备及提交流程

底层通信协议

  1. Akka通信协议,收发邮箱是一体的
  2. Netty通信协议,收发邮箱是分开的

任务调度

任务的最小单位是线程。失败重试,会记录失败的次数,如果超过最大重试次数,宣告Application失败。失败的同时会记录它上一次所在的ExecutorID和Host, 最多重试4次。

Shuffle

功能:打散重分区

特点:无论MR和Spark,Shuffle都需要落盘。其中的区别是MR每次都落盘,Spark是尽可能少落盘。

落盘的话就需要考虑不同分区之间的数据如何存放的问题。假设每个Executor有两个Task,总共有三个分区。以下是四种shuffle落盘的策略:

  1. 每个Task里面的数据打散成3个文件,一个Executor生成6个文件
  2. Executor里面的两个Task的数据打散到3个文件中,一个分区一个文件,共3个文件。
  3. sortShuffle: Executor里面打散的数据落盘到一个文件中,三个分区的数据通过索引来区分。这个就是SortShuffle,目前MR就是sortShuffle。
  4. bypassShuffle:对不同分区的数据进行打散重分区时不对数据进行排序,只适合非聚合类的shuffle算子,比如reduceByKey。

Spark内存管理

堆内和堆外内存

  1. 堆内:通过JVM申请的内存,通过了JVM的转化,更加安全,并且有垃圾回收机制。
  2. 堆外:也称页缓存,自己向操作系统申请。没有经过JVM转换,不安全,没有垃圾回收机制。堆外的内存空间是通过C语言控制的,有出现内存泄漏的危险。
    • 优点:
      • 减少了垃圾回收的工作
      • 加快了复制的速度,省略了序列化的操作。
    • 缺点:
      • 堆外内存难以控制,如果内存泄漏,很难排查
      • 不适合存储复杂对象。
  3. spark中,堆外内存默认是关闭的。
  4. 配置方法
    • executor-memory 和 driver-memory
    • 启用堆外内存spark.memory.offHeap.eabled,并由spark.memory.offHeap.size设置堆外空间大小。

内存的分配

  1. 静态内存管理,简称写死
    • 分为三个部分:
      • 存储空间60%
      • 执行空间20%
      • 其他空间20%
  2. 统一内存管理,简称动态分配
    • 分为三个部分
      • 其他空间40%
      • 存储空间+计算空间=60%
    • 存储和计算空间反向使用,允许空间借用。

RDD的持久化机制

存储内存淘汰规则:

  • 旧RDD所属RDD不能处于被读状态,避免引发一致性问题
  • 新旧Block不能属于同一个RDD,避免循环淘汰
  • 按照最近最少LRU进行淘汰
相关推荐
环球科讯10 分钟前
金融赋能焕新居——建行广东江门分行启动家装补贴季助力消费升温
大数据·人工智能·物联网
LONGZETECH22 分钟前
无人机实训高成本痛点解法:虚拟仿真实现 70% 耗材损耗下降
大数据·算法·unity·架构·无人机
jeffwang23 分钟前
我把同一个压测做错了三次,第四次才发现真正的瓶颈
分布式·性能优化·rust
2401_8652616327 分钟前
亦唐科技(YIKTANG):创新引领国产贴片机发展,稳居行业领军地位
大数据·人工智能·物联网
阿部多瑞 ABU27 分钟前
私域道德的“立法”与公共秩序的失序——法律-道德异化悖论研究
大数据·人工智能
研华科技Advantech29 分钟前
【案例分享】从单点突破到全场景复制:研华赋能药机装备迈向高效合规新范式
大数据·人工智能·边缘计算·工业设备升级
王六米。36 分钟前
武汉自动意志科技有限公司:人工智能应用软件开发:需求总在变化,企业交付方案应该如何取舍
大数据·人工智能·科技·视频矩阵获客·企业ai应用·ai内容自动化·武汉自动意志科技
qingyunliushuiyu1 小时前
制造行业智能问数工具怎么选?2026年选型核心要点梳理
大数据·人工智能·经验分享·制造
Yoyo Chen1801 小时前
DeepSeek API涨价观察:AI行业从免费到收费的转折点
大数据·人工智能·创业创新·ip
paopao_djshddhdj1 小时前
钉钉智慧食堂:赋能企业高效管理的数字化餐饮解决方案
大数据·人工智能·钉钉