Apache spark Tuning Spark:可用内核不均匀时每个节点的执行器数

Apache spark Tuning Spark:可用内核不均匀时每个节点的执行器数,apache-spark,Apache Spark,我已经了解到,Spark中每个执行器有5个内核可以实现最佳读/写吞吐量-因此通常需要设置Spark.Executor.cores=5。另外,您还应该为每个节点减去一个核心,以允许底层守护进程运行 因此,确定每个节点的执行器数量遵循以下公式: executors per node=(cores per node-1)/5个cores per executor 但是,在每个节点机器中有8个内核的情况下,什么是最好的方法 1.4个执行器/节点=(8-1)/5 第一个问题-Spark/yarn是否会有一

我已经了解到,Spark中每个执行器有5个内核可以实现最佳读/写吞吐量-因此通常需要设置
Spark.Executor.cores=5
。另外,您还应该为每个节点减去一个核心,以允许底层守护进程运行

因此,确定每个节点的执行器数量遵循以下公式:

executors per node=(cores per node-1)/5个cores per executor

但是,在每个节点机器中有8个内核的情况下,什么是最好的方法

1.4个执行器/节点=(8-1)/5

第一个问题-Spark/yarn是否会有一个跨越多个节点的执行器

如果没有,那我就得绕道而行。我该走哪条路?我的选择似乎是:

1.)四舍五入为1-意味着每个节点只有1个执行器。我可以增加每个执行器的内核数,但我不知道是否能从中获益


2.)四舍五入到2-这意味着我必须将每个执行器的内核数减少到3个(8个可用内核,-1个用于守护进程,不能有1/2个内核),这可能会降低它们的效率

此处
spark.executor.cores=5
不是硬线值。拇指尺是小于等于5个磁芯的
#

我们需要一个内核用于操作系统和其他Hadoop守护进程。每个节点剩下7个核心。 记住,在所有执行器中,纱线需要一个执行器

spark.executor.cores=4
时,我们不能为纱线保留1个executor,因此我建议不采用该值

spark.executor.cores=3
spark.executor.cores=2
为纱线留出一个节点后,每个节点将始终保留一个执行器

现在哪一个对您的代码有效。这是无法解释的,它取决于多个其他因素,如使用的数据量、使用的连接数等

这是基于我的理解。它为探索多种其他选项提供了一个起点

注意:如果您在代码中使用一些外部Java库和数据集,那么可能需要每个执行器有一个内核来保护类型安全性

希望对你有帮助