执行者和核心数量

时间:2017-04-17 18:22:49

标签: amazon-web-services apache-spark emr

我是新手,想知道如果我们有2个slave c4.8xlarge节点和1个c4.8x大型主节点,那么必须在spark作业和AWS中使用多少核心和执行器。我尝试了不同的组合,但无法理解这个概念。

谢谢。

1 个答案:

答案 0 :(得分:1)

Cloudera家伙给出了很好的解释

https://www.youtube.com/watch?v=vfiJQ7wg81Y

如果,让我们说你的节点上有16个核心(我认为这正是你的情况),那么你给1个纱线来管理这个节点,那么你将15到3分,所以每个执行者都有5个核心。 此外,您有java开销,即Max(384M,0.07 * spark.executor.memory)。 因此,如果每个节点有3个执行程序,那么JVM有3 * Max(384M,0.07 * spark.executor.memory)开销,其余的可用于内存容器。 enter image description here

但是,在有许多用户同时工作的群集上,yarn可以将你的spark会话推出一些容器,使得火花一直回到DAG并将所有RDD带到当前状态,这很糟糕。这就是为什么你需要使--num-executors, - executor-memory和--executor-cores稍微减少,以便提前给其他用户一些空间。但这并不适用于您是唯一一个用户的AWS。

- 执行器 - 内存18Gb应该适合你btw

有关转动群集参数的更多详细信息 http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/