spark中,不論spark-shell還是spark-submit,都可以設置memory大小,但是有的同學會發現有兩個memory可以設置。分別是driver memory 和executor memory。
從名字上大概可以猜出大概。具體就是說driver memory並不是master分配了多少內存,而是管理多少內存。換言之就是為當前應用分配了多少內存。
executor memory是每個節點上占用的內存。每一個節點可使用內存。
單獨設置其中一個,集群仍能正常啟動。
實際應用中,初步感覺executor memory受限於driver memory。當executor memory設置特別大,而driver memory默認時,應用可分配的內存依然很小,數據達到一定程度就會爆棧。故而當前一般先設置DM(driver memory),隨后根據集群情況、任務大小等實際情況來設置EM(executor memory)。
而二者有什么關系,待隨后有時間,查看spark源代碼實現,進行分析。
二者分配的上限下限分別是什么,也需要隨后實踐來證明。在此留下一問,隨后解決。