Spark未使用所有已配置的内存

jan*_*cki 8 scala bigdata apache-spark

使用Spark-2.1.0-SNAPSHOT在10个节点集群上以独立客户端模式启动spark.
9个节点是工人,第10个是主人和司机.每个256GB的内存.我很难充分利用我的集群.

我使用以下参数为spark-shell设置执行程序和驱动程序的内存限制为200GB:

spark-shell --executor-memory 200g --driver-memory 200g --conf spark.driver.maxResultSize=200g
Run Code Online (Sandbox Code Playgroud)

当我的应用程序启动时,我可以在控制台和spark web UI /environment/选项卡中看到这些值按预期设置.
但是当我去/executors/tab时,我发现我的节点只分配了114.3GB的存储空间,请看下面的屏幕.

在此输入图像描述

这里显示的总内存是1.1TB,而我预计会有2TB.我仔细检查了其他进程没有使用内存.
不知道这种差异的根源是什么?我错过了一些设置吗?这是/executors/标签或火花引擎中的错误吗?

Dav*_*vid 5

您已充分利用了内存,但是在这里,您仅查看内存的存储部分。默认情况下,存储部分为总内存的60%。

从Spark Docs

Spark中的内存使用情况大体上属于以下两类之一:执行和存储。执行内存是指用于洗牌,联接,排序和聚合的计算的内存,而存储内存是指用于在集群中缓存和传播内部数据的内存。

从Spark 1.6开始,执行内存和存储内存是共享的,因此不太可能需要调整memory.fraction参数。

如果您使用的是yarn,资源管理器的“已使用内存”和“内存总计”的主页将表示总内存使用量。

在此处输入图片说明