1. 程式人生 > >spark 機制原理自問自答

spark 機制原理自問自答

本文主要收錄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總體上來說不是同一型別的操作,shuffle spill表示executor記憶體不足以存放資料,從而spill到其他位置;shuffle write表示executor之間的資料傳遞大小。

參考連結