【发布时间】:2014-07-11 11:34:32
【问题描述】:
在 Spark Standalone 模式中,有主节点和工作节点。
这里有几个问题:
- 2个工作实例是否意味着一个工作节点有2个工作进程?
- 是每个工作程序实例都为特定应用程序(管理存储、任务)持有一个执行程序,还是一个工作程序节点持有一个执行程序?
- 是否有解释 spark 在运行时如何工作的流程图,例如字数统计?
【问题讨论】:
标签: apache-spark apache-spark-standalone
在 Spark Standalone 模式中,有主节点和工作节点。
这里有几个问题:
【问题讨论】:
标签: apache-spark apache-spark-standalone
我建议先阅读Spark cluster docs,但更重要的是阅读Cloudera blog post 解释这些模式。
您的第一个问题取决于您所说的“实例”是什么意思。节点是一台机器,没有充分的理由在每台机器上运行多个工作人员。因此,两个工作节点通常意味着两台机器,每台机器都是 Spark 工作人员。
Workers 拥有许多 executor,用于许多应用程序。一个应用程序在许多工作人员上都有执行程序。
你的第三个问题不清楚。
【讨论】:
在 Spark Standalone 模式下,有主节点和工作节点。
如果我们在独立模式下在一个地方同时代表 master 和 worker(如果 CPU 和内存可用,每个 worker 可以有多个 executor)。
如果您对 Spark 如何与 YARN 协同工作感到好奇?查看此帖子Spark on YARN
1.两个worker实例是否意味着一个worker节点有两个worker进程?
通常,我们将工作实例称为从属实例,因为它是执行 spark 任务/作业的进程。节点(物理机或虚拟机)和工作器的建议映射是,
1 Node = 1 Worker process
2。是每个工作程序实例都为特定应用程序(管理存储、任务)持有一个执行程序,还是一个工作程序节点持有一个执行程序?
是的,一个工作节点可以拥有多个执行器(进程)如果它有足够的 CPU、内存和存储空间。
检查给定图像中的 Worker 节点。
顺便说一句,在给定时间点工作节点中的执行程序数量完全取决于集群上的工作负载和节点的能力 运行多少个执行器。
3.是否有解释 spark 运行时的流程图?
如果我们从 Spark 的角度查看程序的任何资源管理器的执行情况,其中join 两个rdds 并执行一些reduce 操作然后filter
嗨
【讨论】:
我知道这是一个老问题,肖恩的回答非常好。我的文章是关于 MrQuestion 评论中的 SPARK_WORKER_INSTANCES。如果你使用 Mesos 或 YARN 作为你的集群管理器,你可以在一台机器上运行多个执行器,只有一个 worker,因此实际上没有必要在每台机器上运行多个 worker。但是,如果您使用独立的集群管理器,目前它仍然只允许每个物理机器上的每个工作进程有一个执行器。因此,如果您有一台超大型机器并想在其上运行多个执行器,则必须启动多个工作进程。这就是 spark-env.sh 中的 SPARK_WORKER_INSTANCES 的用途。默认值为 1。如果您确实使用此设置,请确保您明确设置 SPARK_WORKER_CORES 以限制每个工作人员的核心,否则每个工作人员将尝试使用所有核心。
这个独立的集群管理器限制应该很快就会消失。根据SPARK-1706,此问题将在 Spark 1.4 中修复并发布。
【讨论】:
正如 Lan 所说,使用多个工作实例仅在独立模式下相关。您希望拥有多个实例的原因有两个:(1) 垃圾暂停收集器会损害大型 JVM 的吞吐量 (2) >32 GB 的堆大小不能使用 CompressedOoops
阅读更多关于how to set up multiple worker instances的信息。
【讨论】: