我是新手,想知道如果我们有2个slave c4.8xlarge节点和1个c4.8x大型主节点,那么必须在spark作业和AWS中使用多少核心和执行器。我尝试了不同的组合,但无法理解这个概念。
谢谢。
答案 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)开销,其余的可用于内存容器。
但是,在有许多用户同时工作的群集上,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/