spark 機制原理自問自答
阿新 • • 發佈:2019-02-15
本文主要收錄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之間的資料傳遞大小。