spark 机制原理自问自答

本文探讨了Spark中task失败时的重计算情况,区分了shuffle file lost导致的stage重计算和task单独重提交。此外,解释了spark.yarn.executor.memoryOverhead与spark.memory.offHeap.size在表示堆外内存大小时的不同用途,前者用于Executor自身JVM开销,后者用于rdd计算和存储。最后,阐述了shuffle write、shuffle spill (memory)和shuffle spill (disk)的区别,前者涉及executor间数据移动,后两者分别表示内存溢写和磁盘溢写的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要收录spark学习和工作中思考的问题。

####1、当Spark task failed,什么情况下task重计算,什么情况下stage重计算?
答:如果task失败是因为shuffle output files lost,则DAGScheduler会对stage重提交计算;如果不是因为shuffle file lost,则选择resubmit task。这是因为shuffle output file lost涉及stage之间的失误,需要上游重提交stage产生新的shuffle output文件。

####2、参数spark.yarn.executor.memoryOverhead与参数spark.memory.offHeap.size都表示堆外内存大小,有什么区别?
答:作用不同。因为spark.yarn.executor.memoryOverhead表示Executor自身JVM进程需要的内存开销,spark.memory.offHeap.size表示rdd计算执行和数据存储使用的offheap(默认计算和存储各占50%,由参数spark.memory.storageFraction控制)。

####3、关于shuffle write、shuffle spill (memory)、shuffle spill (disk)概念有什么区别?

  • shuffle spill memory: 表示spill过程中没有序列化的在内存的数据。
  • shuffle spill disk:表示spill结束后spill到disk的序列化后的数据。
  • shuffle write: 表示数据在executor之间移动,例如join、groupBy等操作。

shuffle spill跟shuffle write总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值