我是 Spark 新手。
我有一个具有此配置的集群:
Number of nodes : 10
Number of cores per node : 16
Memory (RAM) per node : 64gb
这是我的火花提交命令:
spark-submit --master yarn
--deploy-mode cluster
--driver-cores 5
--driver-memory ??G
--executor-cores 5
--executor-memory 12G
--conf spark.sql.shuffle.partitions=1440
example.py
我将驱动程序和执行程序核心设置为 5,因为我被告知这是最佳选择。为了计算执行器内存,我得到了这个公式:
executor_memory = memory_available - container_overhead
memory_available = total_memory / number_of_executors_per_node
memory_available = 64gb / 5 = 12.8 = ~13gb
container_overhead = 13gb – (7% * 13gb) = 0.91 = ~1
executor_memory = 13 – 1 => 12gb
我的问题是:
通常像这样的广泛问题(以及包含多个问题的问题帖子)在 Stackoverflow 上不受欢迎,因为:
但由于这是一个真实的问题,而且显然您一直在向自己提出一些很好的问题,所以我会给您一个答案。由于您问题的性质,您可能会留下更多问题。在这种情况下,请随意在这里提出新问题,但要让它们“好”。包括代码、有关集群的信息、Spark 版本、有关数据的信息,每个帖子仅提出 1 个问题,... 答案
在开始填写数字之前您需要询问一些注意事项。
您的计算会占用大量内存/CPU 吗?
.collect
.collect
spark.sql.shuffle.partitions