使用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
当我的应用程序启动时,我可以在控制台和spark web UI /environment/
选项卡中看到这些值按预期设置。
但是当我转到/executors/
标签时,我发现我的节点只分配了114.3GB的存储空间,请参见下面的屏幕。
How to do BPEL,BPM deployment in JBoss AS7/EAP
此处显示的总内存为1.1TB,而我预计会有2TB。我仔细检查了其他进程没有使用内存
不知道这种差异的根源是什么?我错过了一些设置吗?它是/executors/
标签或火花引擎中的错误吗?
答案 0 :(得分:5)
你正在充分利用内存,但在这里你只看内存的存储部分。默认情况下,存储部分占总内存的60%。
Spark中的内存使用大致属于以下两类之一:执行和存储。执行内存是指用于在随机,连接,排序和聚合中进行计算的内存,而存储内存是指用于在群集中缓存和传播内部数据的内存。
从Spark 1.6开始,执行内存和存储内存是共享的,因此您不太可能需要调整memory.fraction参数。
如果您正在使用yarn,资源管理器的“Memory Used”和“Memory Total”的主页将表示总内存使用量。