工人,工人实例和执行者之间是什么关系?


72

Spark Standalone模式下,存在主节点和工作节点。

这里有几个问题:

  1. 2个工作程序实例是否意味着一个具有2个工作程序进程的工作程序节点?
  2. 是每个工作实例都拥有一个特定应用程序的执行程序(用于管理存储,任务),还是一个工作节点拥有一个执行程序?
  3. 是否有流程图说明spark在运行时如何工作,例如字数统计?

Answers:


57

我建议您先阅读Spark集群文档,然后阅读更多Cloudera博客文章,以解释这些模式。

您的第一个问题取决于“实例”的含义。节点就是一台机器,没有充分的理由在每台机器上运行多个工作线程。因此,两个工作程序节点通常意味着两台计算机,每个计算机都是一个Spark工作程序。

工人拥有许多执行者,可以执行许多应用程序。一种应用程序在许多工人上都有执行人。

您的第三个问题不清楚。


6
1.第一个问题来自spark-env.sh:SPARK_WORKER_INSTANCES,用于设置每个节点的工作进程数。2. StandaloneExecutorBackend类是所谓的Executor吗?3.你能解释一下单词计数如何进入火花,数据如何通过图片传输不同的节点:)
edwardsbean 2014年

51

除了其他出色的答案,我想用很少的图像来描述。

在Spark Standalone模式下,有主节点和工作节点。

如果我们以独立模式在一个地方代表主人和工人。

Spark独立模式

如果您对Spark如何与YARN一起使用感到好奇?检查这篇文章Spark on YARN

1.两个工作程序实例是否意味着一个具有两个工作程序进程的工作程序节点?

通常,我们将工作程序实例称为从属实例,因为它是执行spark任务/作业的过程。建议的节点(物理或虚拟机)和工作程序的映射是,

1 Node = 1 Worker process

2.每个工作程序实例是否都拥有特定应用程序(管理存储,任务)的执行程序,还是一个工作程序节点拥有一个执行程序?

是的,如果一个工作程序节点具有足够的CPU,Memory和Storage,则可以容纳多个执行程序(进程)。

检查给定图像中的Worker节点。 集群中的辅助节点

顺便说一句,在给定时间点,工作节点中执行程序的数量完全取决于群集上的工作负载以及该节点运行多少个执行程序的能力。

3.是否有流程图说明Spark运行时如何?

如果我们看一下从执行角度星火在任何资源管理器的程序,其中join2个rddS和做一些reduce操作,然后filter

Spark运行时示例代码

HIH


1
非常好的和详尽的答案,太糟糕了,海报已经接受了答案
botengboteng

1
优秀的帖子-谢谢!一个问题:您说“节点(物理或虚拟机)和工作程序的建议映射是1个节点= 1个工作程序进程”。但是Spark.apache.org/docs/latest/hardware-provisioning.html上的Spark文档说:“请注意,Java VM在200 GB以上的RAM上并不总是表现良好。如果您购买的RAM超过此数量,您可以在每个节点上运行多个辅助JVM”。因此,您的建议是否假设此JVM RAM限制?还是(我怀疑)此RAM限制是否基于较旧的JVM,而这些JVM的内存收集功能却不够强大?
布莱恩

@Brian:我认为,发生JVM时(尤其是堆)到JVM的内存更多,而GC的时间(日志暂停)更多。对不起,我的回复很晚,所以我错过了您的评论。
mrsrinivas

33

我知道这是一个老问题,Sean的回答非常好。我的书面记录是关于SPARK_WORKER_INSTANCES在MrQuestion的评论。如果将Mesos或YARN用作群集管理器,则可以在同一台计算机上使用一个工作程序运行多个执行程序,因此实际上不需要在每台计算机上运行多个工作程序。但是,如果使用独立的群集管理器,当前在每个物理计算机上,每个工作进程仍只允许一个执行程序。因此,如果您有一台超大型计算机并想在其上运行多个执行器,则必须启动多个工作进程。这就是spark-env.sh中的SPARK_WORKER_INSTANCES的用途。默认值为1。如果确实使用此设置,请确保设置SPARK_WORKER_CORES 明确限制每个工作人员的核心,否则每个工作人员将尝试使用所有核心。

这个独立的集群管理器限制应该很快就会消失。根据此SPARK-1706,此问题将在Spark 1.4中修复并发布。


那么,它现在在最新的Spark版本中如何工作?我可以通过仅设置执行程序的内核数来操纵工人的数量。就像工人有16个核心,而我将执行者核心设为4,是否每个工人有4个执行者?我最近问了这样的问题,您可能会回答,stackoverflow.com
MetallicPriest

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.