java - Apache Spark 中的执行器和核心
问题描述
我对 Spark 有点陌生,并试图理解几个术语。(无法理解使用在线资源)
请先用以下条款验证我:
执行者:container or JVM process
它将在worker node or data node
. 每个节点可以有多个 Executor。
核心:它是一个container or JVM process
运行在worker node or data node
. 每个执行程序可以有多个核心或线程。
如果以上两个概念有误,请纠正我。
问题:
- 当我们提交火花作业时,这意味着什么?我们是否将我们的工作移交给 Yarn 或资源管理器,它们将资源分配给我
application or job
的集群并执行?它的正确理解..? 在用于在 spark 集群中提交作业的命令中,有一个设置执行器数量的选项。
spark-submit --class <CLASS_NAME> --num-executors ? --executor-cores ? --executor-memory ? ....
那么这些执行器+核心的数量将在每个节点上设置吗?如果没有,那么我们如何设置每个节点的特定核心数?
解决方案
你所有的假设都是正确的。有关集群架构的详细说明,请通过此链接。你会得到一个清晰的画面。关于你的第二个问题, num-of-executors 是针对整个集群的。计算如下:
num-cores-per-node * total-nodes-in-cluster
例如,假设你有一个 4 核机器的 20 节点集群,你提交了一个 -executor-memory 1G 和 --total-executor-cores 8 的应用程序。然后 Spark 将启动 8 个 executor,每个 1 GB RAM,在不同的机器上。Spark 默认这样做是为了让应用程序有机会为在同一台机器上运行的分布式文件系统(例如 HDFS)实现数据局部性,因为这些系统通常具有分布在所有节点上的数据。
我希望它有帮助!
推荐阅读
- sql-server - 来自 SQL 查询的自定义 XML 转换
- angular - 当一段时间不活动时,监视我的整个应用程序的事件和注销
- sql - 如何执行左连接比较两个月的列并获得一个接一个的列?
- javascript - 将 innerHTML 附加到已附加在循环内的 div
- python - CSV Parse 有空单元格
- hl7-fhir - 创建 FHIR 文档的推荐工作流程
- javascript - 根据表单中的搜索值显示 rss 提要
- reactjs - 反应钩子问题:简单的内容过滤器
- python-sphinx - 狮身人面像:如何更改 html 标题?
- r - 给定大量重新编码数据的 CSV,编写映射函数的最有效方法