Apache spark groupByKey函数的机制
我是一个新手,尝试了解Spark的内部实现。我做了一个测试来查看Apache spark groupByKey函数的机制,apache-spark,Apache Spark,我是一个新手,尝试了解Spark的内部实现。我做了一个测试来查看groupByKey的缩放行为。结果表明,执行时间与每个节点的核心数无关,但我可以看到,如果增加节点数,执行时间会大大减少 我知道这个操作在磁盘和网络上应该是瓶颈。那么,观察每个节点的核心数量是因为有限的网络和磁盘带宽?如果答案是肯定的,那么由于带宽线性增加,如果我增加节点数,执行时间会线性减少吗?如果有人根据groupByKey:)的实现对此进行解释,我们将不胜感激。一般来说groupByKey受到以下限制: 要洗牌的数据量 聚
groupByKey
的缩放行为。结果表明,执行时间与每个节点的核心数无关,但我可以看到,如果增加节点数,执行时间会大大减少
我知道这个操作在磁盘和网络上应该是瓶颈。那么,观察每个节点的核心数量是因为有限的网络和磁盘带宽?如果答案是肯定的,那么由于带宽线性增加,如果我增加节点数,执行时间会线性减少吗?如果有人根据
groupByKey
:)的实现对此进行解释,我们将不胜感激。一般来说groupByKey
受到以下限制:
- 要洗牌的数据量
- 聚合的非惰性值集合的大小
- 随后的垃圾收集
根据数据分布和集群拓扑,您可以通过增加节点数量来减少总体延迟,但最终它无法直接解决上述任何问题。此外,每个密钥都必须由一个执行者进行最终处理。一般来说,
groupByKey
受到以下限制:
- 要洗牌的数据量
- 聚合的非惰性值集合的大小
- 随后的垃圾收集
根据数据分布和集群拓扑,您可以通过增加节点数量来减少总体延迟,但最终它无法直接解决上述任何问题。此外,每个密钥最终都必须由一个执行器处理。您到底是如何调整核心的?虚拟机?我的节点中有36个核心。在本测试中,我每个节点使用4个执行器,并将每个执行器的核心数从1更改为9:)您到底是如何调整核心数的?虚拟机?我的节点中有36个核心。在此测试中,我每个节点使用4个执行器,并将每个执行器的核心数从1更改为9:)