Apache Spark 中的执行器和核心
Executors and cores in Apache Spark
我对 Spark 有点陌生,并试图理解几个术语。 (无法理解使用在线资源)
请先用以下条款验证我:
执行者:其 container or JVM process
将在 worker node or data node
上 运行。每个节点可以有多个执行器。
核心:它是 worker node or data node
上 container or JVM process
运行 中的一个线程。每个执行器可以有多个内核或线程。
以上两个概念如有错误请指正
问题:
- 当我们提交 spark 作业时,这意味着什么?我们在交
将我们的工作交给 Yarn 或资源管理器,后者将分配
集群中我的
application or job
的资源并执行它?
它的正确理解.. ?
在spark集群提交作业的命令中,有一个选项
设置执行者数量。
spark-submit --class <CLASS_NAME> --num-executors ? --executor-cores ? --executor-memory ? ....
所以这些执行器 + 内核的数量将按节点设置?如果不是那么我们如何设置每个节点的具体内核数?
你所有的假设都是正确的。有关集群架构的详细说明,请查看 this link。你会得到一个清晰的画面。关于你的第二个问题,num-of-executors 是针对整个集群的。计算如下:
num-cores-per-node * total-nodes-in-cluster
例如,假设你有一个20节点的集群,4核机器,你提交了一个应用-executor-memory 1G和--total-executor-cores 8。然后Spark会启动8个executor ,每个都有 1 GB 的 RAM,在不同的机器上。 Spark 默认这样做是为了让应用程序有机会在同一台机器(例如 HDFS)上实现分布式文件系统 运行 的数据局部性,因为这些系统通常将数据分布在所有节点上。
希望对您有所帮助!
我对 Spark 有点陌生,并试图理解几个术语。 (无法理解使用在线资源)
请先用以下条款验证我:
执行者:其 container or JVM process
将在 worker node or data node
上 运行。每个节点可以有多个执行器。
核心:它是 worker node or data node
上 container or JVM process
运行 中的一个线程。每个执行器可以有多个内核或线程。
以上两个概念如有错误请指正
问题:
- 当我们提交 spark 作业时,这意味着什么?我们在交
将我们的工作交给 Yarn 或资源管理器,后者将分配
集群中我的
application or job
的资源并执行它? 它的正确理解.. ? 在spark集群提交作业的命令中,有一个选项 设置执行者数量。
spark-submit --class <CLASS_NAME> --num-executors ? --executor-cores ? --executor-memory ? ....
所以这些执行器 + 内核的数量将按节点设置?如果不是那么我们如何设置每个节点的具体内核数?
你所有的假设都是正确的。有关集群架构的详细说明,请查看 this link。你会得到一个清晰的画面。关于你的第二个问题,num-of-executors 是针对整个集群的。计算如下:
num-cores-per-node * total-nodes-in-cluster
例如,假设你有一个20节点的集群,4核机器,你提交了一个应用-executor-memory 1G和--total-executor-cores 8。然后Spark会启动8个executor ,每个都有 1 GB 的 RAM,在不同的机器上。 Spark 默认这样做是为了让应用程序有机会在同一台机器(例如 HDFS)上实现分布式文件系统 运行 的数据局部性,因为这些系统通常将数据分布在所有节点上。
希望对您有所帮助!