【问题标题】:Executors and cores in Apache SparkApache Spark 中的执行器和核心
【发布时间】:2020-06-14 17:04:48
【问题描述】:

我对 Spark 有点陌生,并试图理解几个术语。 (无法理解使用在线资源)

请先用以下条款验证我:

执行者:它的container or JVM process 将在worker node or data node 上运行。每个节点可以有多个 Executor。

核心:它是container or JVM process 中的一个线程,在worker node or data node 上运行。每个执行程序可以有多个内核或线程。

如果以上两个概念有误,请指正。

问题:

  1. 当我们提交 Spark 作业时,这意味着什么?我们在交 将我们的工作交给 Yarn 或资源经理,他们将分配 资源到集群中我的application or job 并执行? 它的理解是否正确..?
  2. 在spark集群中用于提交作业的命令中,有一个选项 设置执行者的数量。

    spark-submit --class <CLASS_NAME> --num-executors ? --executor-cores ? --executor-memory ? ....

那么这些执行器 + 核心的数量将设置每个节点?如果没有,我们如何设置每个节点的特定核心数?

【问题讨论】:

    标签: java apache-spark cluster-computing hadoop-yarn


    【解决方案1】:

    你所有的假设都是正确的。有关集群架构的详细说明,请通过this 链接。你会得到一个清晰的画面。关于你的第二个问题, num-of-executors 是针对整个集群的。计算如下:

    num-cores-per-node * total-nodes-in-cluster
    

    例如,假设您有一个包含 4 核机器的 20 节点集群,并且您提交了一个 -executor-memory 1G 和 --total-executor-cores 8 的应用程序。然后 Spark 将启动 8 个执行器,每个在不同的机器上具有 1 GB 的 RAM。 Spark 默认这样做是为了让应用程序有机会为在同一台机器上运行的分布式文件系统(例如 HDFS)实现数据本地化,因为这些系统通常具有分布在所有节点上的数据。

    希望对你有帮助!

    【讨论】:

    • 我们怎样才能在每个节点上拥有多个执行器 ..?相同的任何设置或配置..?
    • 它是一个集群配置。根据您的集群配置,您可以决定需要在 spark-submit 作业中传递的值。请参阅此链接中接受的答案。它有一个很好的详细解释。 stackoverflow.com/questions/37871194/… 并在您满意后接受答案
    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2015-10-10
    • 2018-06-02
    相关资源
    最近更新 更多