与核心和执行者相关的问题被问了很多次。
Apache Spark: The number of cores vs. the number of executors
因为每个案例都不一样,我又问了一个类似的问题。
我正在运行一个cpu密集型应用程序,具有相同数量的不同执行器的核心。以下是观察结果。
资源管理器: Kubernetes
案例1:执行器- 6,每个执行器的核心数目-2,执行器内存- 3g,数据处理量~10 of,分区-36,作业持续时间:75分钟
案例2:执行器- 4,每个执行器的核心数目-3,执行器内存- 3g,数据处理量~10 of,分区-36,作业持续时间:101分钟
根据上面的链接,每个执行器少于5个内核的任何内容都有利于IO操作。
在我的两种情况下,核心都是相同的(12),但是这两项工作所用的时间不同。有什么想法吗?
更新的
案例3:执行器- 12,每个执行器的核心数目-1,执行器内存- 3g,数据处理量~10 81,分区-36,作业持续时间:81分钟
发布于 2019-06-26 12:48:09
有很多可能的解决方案,首先,并不是所有的节点生来都是平等的,它可能是一个工作变得不走运,得到一个缓慢的节点。如果您执行洗牌操作,有更多的节点,但相同的计算能力将真正减缓您的工作速度。毕竟,在洗牌操作中,您的所有信息最终都将存储在单个节点上。让这个节点有更少的数据和更少的电源将减慢操作速度。但我怀疑,即使没有洗牌操作,更多的节点也会慢一些,因为单个节点从其他节点获得更多工作的可能性更高。
解释:
假设我有一个节点、10个小时的工作和10个核心,所以我知道这需要1小时,但是如果我有2个节点,每个节点有5个核,那么假设数据集是以一种方式划分的,一个节点有5.5小时的工作,其他的4.5个小时,作业长度将是1.1小时。
分布式计算总是要付出一定的开销。因此,在一台机器上使用相同的资源通常更快。
希望我想说的都清楚了。
发布于 2019-06-26 21:42:12
在第一种情况下,您确实有50%的内存可以使用(3g*6=18g),而锁定问题则更少(2个内核/执行器,而不是3个)。尝试使用1核/执行器进行动态分配,看看会发生什么
https://stackoverflow.com/questions/56769146
复制相似问题