我有一个20模式c4.4xlarge集群来运行Spark作业。每个节点都是16个vCore,30 GiB内存,仅EBS存储EBS存储:32 GiB计算机。
由于每个节点都有16个vCore,所以我知道执行程序的最大数量是16 * 20> 320个执行程序。可用总内存为20(#nodes)* 30〜600GB。将1 / 3rd分配给系统操作,我有400 GB的内存来处理内存中的数据。这是正确的理解吗?
此外,“火花历史记录”显示输入和随机播放的不均匀分布。我认为处理过程不会在执行者之间平均分配。我在spark-submit中传递了这些配置参数-
> —-conf spark.dynamicAllocation.enabled=true —-conf spark.dynamicAllocation.minExecutors=20
火花历史用户界面中的执行器摘要还显示数据分发负载完全不对称,并且我没有以最佳方式使用集群。如何更好地分配负载-