apachespark:cores与executors之比较

d6kp6zgx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(340)

关于核心和执行者的问题被问了很多次。
apachespark:内核数量与执行器数量
由于每个案例都不同,我再次提出类似的问题。
我运行的是一个cpu密集型应用程序,具有相同数量的内核和不同的执行器。以下是观察结果。
资源管理器:kubernetes
案例1:executors-6,每个executor的内核数-2,executor内存-3g,数据处理量~10gb,分区-36,作业持续时间:75分钟
案例2:executors-4,每个executor的内核数-3,executor内存-3g,数据处理量~10gb,分区-36,作业持续时间:101分钟
根据上面的链接,每个执行器少于5个内核的任何东西都适合io操作。
在我的两个例子中,内核是相同的(12),但是两个作业所用的时间不同。有什么想法吗?
更新
案例3:executors-12,每个executor的内核数-1,executor内存-3g,数据处理量~10gb,分区-36,作业持续时间:81分钟

k7fdbhmy

k7fdbhmy1#

在第一种情况下,您确实有50%的内存可供使用(3g*6=18g),而锁定问题较少(2个内核/执行器,而不是3个)。尝试使用1core/executor动态分配,看看会发生什么

8fq7wneg

8fq7wneg2#

有很多可能的解决方案,首先不是所有的节点生来都是平等的,可能是其中一个作业得到了不吉利的节点而得到了一个较慢的节点。如果执行具有更多节点但计算能力相同的洗牌操作,则会降低作业的速度。在洗牌操作中,所有信息最终都将存储在一个节点上。让这个节点拥有更少的数据和更少的电力将减慢操作。但我怀疑,即使没有洗牌操作,更多的节点也会慢一些,因为单个节点有更多的工作要从其他节点完成的可能性更高。
说明:
假设我有一个节点,10个小时的工作时间和10个核心,所以我知道这需要1个小时,但如果我有2个节点,每个节点有5个核心,假设数据集是以一个节点有5.5个小时的工作时间和其他4.5个小时的工作时间的方式分区的,那么作业长度将是1.1小时。
分布式计算总是要付出高昂的代价。所以在一台机器上使用相同的资源通常更快。
希望我想说的很清楚。

相关问题