我有一个10节点集群,8个DN(256 GB,48个核心)和2个NN。我有一个spark sql作业被提交给纱线集群。以下是我用于spark-submit的参数。 --num-executors 8 \ --executor-cores 50 \ - 驱动内存20G --exectoror-memory 60G \ 可以看出上面的执行器 - 内存是60GB,但是当我查看Spark UI时显示的是31GB。
1)任何人都可以解释为什么它显示31GB而不是60GB。 2)还有助于为上述参数设置最佳值。
答案 0 :(得分:0)
我想,
分配的内存分为两部分: 1.存储(缓存数据帧/表) 2.处理(你可以看到的那个)
31gb是可用于处理的内存。 使用spark.memory.fraction属性来增加/减少可用于处理的内存。
我建议将执行程序核心减少到大约8-10
我的配置:
spark-shell --executor-memory 40g --executor-cores 8 --num-executors 100 --conf spark.memory.fraction = 0.2