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

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

  1. 2工作者实例是否意味着有2个工作者进程的工作者节点?
  2. 每个工作者实例是否为特定应用程序(pipe理存储,任务)或者一个工作者节点持有一个执行器?
  3. 有没有一个stream程图说明如何火花运行时,如字数?

我build议先阅读Spark集群文档 ,但更多的是这个Cloudera博客文章解释这些模式。

你的第一个问题取决于你的意思是“实例”。 一个节点是一台机器,没有一个很好的理由每台机器运行多个worker。 所以两个工人节点通常意味着两台机器,每台机器都是一名Spark工人

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

你的第三个问题不清楚。

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

这种独立的集群pipe理器限制应该尽快消失。 根据这个SPARK-1706 ,这个问题将在Spark 1.4中得到修复和发布。

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

详细了解如何设置多个工作者实例 。