Apache spark Tuning Spark:可用内核不均匀时每个节点的执行器数
我已经了解到,Spark中每个执行器有5个内核可以实现最佳读/写吞吐量-因此通常需要设置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.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库和数据集,那么可能需要每个执行器有一个内核来保护类型安全性
希望对你有帮助