执行者和核心的数量
Number of executors and cores
我是 spark 的新手,想知道如果我们有 2 个从属 c4.8xlarge 节点和 1 个 c4.8x 大型主节点,一个 spark 作业和 AWS 必须使用多少个内核和执行器。我尝试了不同的组合,但无法理解这个概念。
谢谢。
Cloudera 的人对此给出了很好的解释
https://www.youtube.com/watch?v=vfiJQ7wg81Y
如果,假设你的节点上有 16 个核(我认为这正是你的情况),那么你给 1 个 yarn 来管理这个节点,然后你将 15 分配给 3 个,所以每个执行器有 5 个核.
此外,您还有 java 开销,即 Max(384M, 0.07*spark.executor.memory)。
因此,如果每个节点有 3 个执行程序,那么 JVM 的开销为 3*Max(384M, 0.07*spark.executor.memory) ,其余的可用于内存容器。
然而,在一个有很多用户同时工作的集群上,yarn 可以将你的 spark session 推出一些容器,使 spark 通过 DAG 一路返回并将所有 RDD 带到当前状态,这是不好的.这就是为什么您需要稍微减少 --num-executors、--executor-memory 和 --executor-cores 以便提前给其他用户一些 space。但这不适用于您是唯一用户的 AWS。
--executor-memory 18Gb 应该适合你顺便说一句
有关调整集群参数的更多详细信息
http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/
我是 spark 的新手,想知道如果我们有 2 个从属 c4.8xlarge 节点和 1 个 c4.8x 大型主节点,一个 spark 作业和 AWS 必须使用多少个内核和执行器。我尝试了不同的组合,但无法理解这个概念。
谢谢。
Cloudera 的人对此给出了很好的解释
https://www.youtube.com/watch?v=vfiJQ7wg81Y
如果,假设你的节点上有 16 个核(我认为这正是你的情况),那么你给 1 个 yarn 来管理这个节点,然后你将 15 分配给 3 个,所以每个执行器有 5 个核.
此外,您还有 java 开销,即 Max(384M, 0.07*spark.executor.memory)。
因此,如果每个节点有 3 个执行程序,那么 JVM 的开销为 3*Max(384M, 0.07*spark.executor.memory) ,其余的可用于内存容器。
然而,在一个有很多用户同时工作的集群上,yarn 可以将你的 spark session 推出一些容器,使 spark 通过 DAG 一路返回并将所有 RDD 带到当前状态,这是不好的.这就是为什么您需要稍微减少 --num-executors、--executor-memory 和 --executor-cores 以便提前给其他用户一些 space。但这不适用于您是唯一用户的 AWS。
--executor-memory 18Gb 应该适合你顺便说一句
有关调整集群参数的更多详细信息 http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/