問題
的執行人選項卡中火花UI顯示更少的內存比實際上是可用的節點上:
AWS
- 一個m4.xlarge實例(16 GB的ram, 4芯)司機節點,顯示了4.5 GB的內存執行人選項卡。
- 一個m4.large實例(8 GB ram, 2芯)驅動節點,顯示710 MB內存執行人標簽:
導致
顯示內存的總量小於集群因為一些內存占用的內存由內核和節點級服務。
解決方案
計算可用的內存數量,您可以使用公式用於執行程序內存分配(all_memory_size * 0.97 - 4800 mb) * 0.8,地點:
- 0.97占內核開銷。
- 4800 MB占內部節點級服務(節點守護進程、日誌守護進程,等等)。
- 0.8是一個啟發式確保LXC容器運行引發過程不會崩潰,因為內存不足的錯誤。
總可用內存存儲在一個實例* 0.97 - 4800 mb (8192 mb) * 0.8 - 1024= 1.2 GB。因為參數spark.memory.fraction默認情況下是0.6,大約(1.2 * 0.6)= ~ 710 MB是用於存儲。
你可以改變spark.memory.fraction火花配置(AWS|Azure)來調整該參數。計算一個新的的可用內存參數如下:
- 如果你使用一個實例,8192 MB內存,可用內存1.2 GB。
- 如果你指定一個spark.memory.fraction0.8,執行人引發用戶界麵應該顯示選項卡:(1.2 * 0.8)GB 960 MB。