Apache Spark:核心数与执行器数
由于每个案例都不一样,我又问了一个类似的问题。
我正在运行一个cpu密集型的应用程序,具有相同数量的核心和不同的执行器。以下是观察结果。
更新
案例3:执行器-12个,每个执行器的核心数-1个,执行器内存-3个,数据处理量-10 GB,分区-36个,作业持续时间:81分钟
有很多可能的解决方案,首先并不是所有的节点生来就平等,可能是某个作业运气不好,得到了一个慢的节点。如果您执行具有更多节点但计算能力相同的洗牌操作,将会使您的工作变慢。毕竟,在洗牌操作中,所有信息最终都将存储在单个节点上。如果该节点的数据较少,功耗也较低,则操作速度会变慢。但是我怀疑,即使没有洗牌操作,更多的节点也会慢一点,因为单个节点有更多的工作要从其他节点执行的可能性更高。
说明:
假设我有一个节点,10个小时的工作和10个核心,所以我知道这将需要1个小时,但如果我有两个节点,每个节点有5个核心,假设数据集是以一种方式分区的,一个节点有5.5个小时的工作,另一个4.5个小时,那么作业长度将是1.1个小时。
.NET核心和ASP.NET核心到底有什么区别?
19.2 核心与核心模块 谈完了整个开机的流程,您应该会知道,在整个开机的过程当中,是否能够成功的驱动我们主机的硬件配备, 是核心 (kernel) 的工作!而核心一般都是压缩文件,因此在使用核心之前,就得要将他解压缩后,才能载入内存当中。 另外,为了应付日新月异的硬件,目前的核心都是具有“可读取模块化驱动程序”的功能, 亦即是所谓的“ modules (模块化)”的功能啦!所谓的模块化可以将他想
我提出了一个关于Spark的非常愚蠢的问题,因为我想澄清我的困惑。我对Spark非常陌生,仍在努力理解它在内部是如何工作的。 比方说,如果我有一个输入文件列表(假设1000),我想在某个地方处理或写入,并且我想使用coalesce将我的分区数减少到100。 现在我用12个执行器运行这个作业,每个执行器有5个内核,这意味着它运行时有60个任务。这是否意味着,每个任务将在一个单独的分区上独立工作? 回
我不明白的是,当我提交作业并指定: 应该只占用4个核心。然而,当提交作业时,它将使用所有16个内核,并跳过参数而旋转8个执行器。但是,如果我将参数更改为,它将相应地调整,4个executors将向上旋转。
您从哪里开始调优上面提到的params。我们是从执行器内存开始,得到执行器的数目,还是从核心开始,得到执行器的数目。我跟踪了链接。然而得到了一个高水平的想法,但仍然不确定如何或从哪里开始并得出最终结论。
需要进行一些运行时澄清。 在我读到的其他地方的一个线程中,有人说Spark Executor应该只分配一个核心。然而,我想知道这是否真的永远是真的。阅读各种so问题和诸如此类的问题,以及Karau、Wendell等人的著作,可以清楚地看到,有相同或相反的专家指出,在某些情况下,每个执行者应该指定更多的内核,但讨论往往更多的是技术性的,而不是功能性的。也就是说,缺少功能性的例子。 > 我的理解是RD