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

时间:2014-07-11 11:34:32

标签: apache-spark apache-spark-standalone

Spark独立模式中,有主节点和工作节点。

以下是几个问题:

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

4 个答案:

答案 0 :(得分:45)

我建议先阅读Spark cluster docs,但更多的是Cloudera blog post解释这些模式。

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

对于许多应用程序,工作人员拥有许多执行程序。一个应用程序在许多工作者中都有执行程序。

你的第三个问题不明确。

答案 1 :(得分:29)

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

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

答案 2 :(得分:29)

扩展到其他很棒的答案,我想用几张图片来描述。

  

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

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

Spark Standalone mode

如果您对Spark如何与YARN合作感到好奇?查看此帖子Spark on YARN

  

<强> 1。 2工作者实例是否意味着一个具有2个工作进程的工作节点?

通常我们将工人实例称为奴隶,因为它是执行火花任务/工作的过程。建议的节点(物理或虚拟机)和工作人员的映射是

1 Node = 1 Worker process
  

<强> 2。每个工作实例是否为特定应用程序(管理存储,任务)或一个工作节点拥有一个执行程序的执行程序?

是的,如果工作节点有足够的CPU,内存和存储,则工作节点可以持有多个执行程序(进程)

检查给定图像中的Worker节点。 A Worker node in cluster

顺便说一句,工作节点在给定时间点的执行者数量完全取决于群集上的工作负载节点的功能< / strong>运行多少执行程序。

  

第3。是否有流程图解释火花运行时的方式?

如果我们通过任何资源管理器查看Spark预期执行的程序,join两个rdd并执行一些reduce操作filter

Spark runtime for a sample code

HIH

答案 3 :(得分:7)

正如Lan所说,使用多个工作器实例仅在独立模式下有用。您希望拥有多个实例的原因有两个:(1)垃圾暂停收集器可能会损害大型JVM的吞吐量(2)堆大小> 32 GB无法使用CompressedOoops

详细了解how to set up multiple worker instances