![](/img/trans.png)
[英]Tuning Spark: number of executors per node when cores available are uneven
[英]Spark performance tuning - number of executors vs number for cores
我有两个关于 Spark 性能调优的问题:
我理解在 Spark 作业中控制并行性的关键之一是正在处理的 RDD 中存在的分区数量,然后控制处理这些分区的执行程序和内核。 我可以假设这是真的吗:
我知道每个执行程序拥有大量内核会对 HDFS 写入之类的事情产生 -ve 影响,但这是我的第二个问题,纯粹从数据处理的角度来看,两者之间有什么区别? 例如,如果我有 10 个节点集群,这两个作业之间的区别是什么(假设每个节点有足够的内存来处理所有内容):
5 个执行器 * 2 个执行器核心
2 个执行器 * 5 个执行器核心
假设有无限的内存和 CPU,从性能的角度来看,我们是否应该期望上述两者的性能相同?
大多数情况下,使用更大的执行器(更多内存、更多内核)会更好。 一:大内存的大执行器可以轻松支持广播连接,摆脱shuffle。 第二:由于任务不是平等的,统计上较大的执行者有更好的机会在 OOM 问题中幸存下来。 大型执行程序的唯一问题是 GC 暂停。 G1GC 有帮助。
根据我的经验,如果我有一个包含 10 个节点的集群,我会选择 20 个 spark 执行程序。 作业的细节很重要,因此一些测试将有助于确定可选配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.