按需静态设置
参考链接:Stack Overflow
接下来的案例包含了标题中的三方面内容:executor 核心数目,executor 数量,executor 内存。例如 driver memory 这样的参数原文并没有提及。
案例:6 个节点,每个节点 16 核 + 64 GB RAM
由于每个 executor 都是一个 JVM 实例,所以我们可以给每个节点分配多个 executor。
-
为系统的运行保留资源
文章原文的内容是:为了保证操作系统和 hadoop 进程的运行,每个节点要预留 1 个核心 + 1 GB 内存。所以每个节点可用的资源为:15 个核心 + 63 GB RAM。
但是如果你不希望你的系统陷入高负载的情况,你可以多预留一些资源,我个人的使用经验是每个节点预留 4 个核心 + 4 GB 内存。 -
确定每个 executor 的核心数量——“magic number”
executor 核心数量 = executor 能并发执行的任务(task)数量 ,研究表明,不是给 executor 分配越多的核心越好,任何一个 application 分配的核心数目超过 5 个只会导致性能下降,所以我们一般把 executor 核心数量设置为 5 及 5 以下的数字。在接下来的案例讲解中我们把核心数目设置为