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

edw*_*ean 64 apache-spark apache-spark-standalone

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

这里有几个问题:

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

Sea*_*wen 51

我建议首先阅读Spark集群文档,但更重要的是这个Cloudera博客文章解释了这些模式.

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

对于许多应用,工人拥有许多执行者.一个应用程序在许多工作者上有执行者.

你的第三个问题不明确.

  • 1.第一个问题来自spark-env.sh:SPARK_WORKER_INSTANCES,用于设置每个节点的工作进程数.2. StandaloneExecutorBackend类是什么叫Executor?3.你能解释一下wordcount如何进入spark,数据如何逐个节点地传输:) (6认同)

mrs*_*vas 36

扩展到其他伟大的答案,我想描述几个图像.

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

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

Spark Standalone模式

如果您对Spark如何与YARN合作感到好奇?查看这篇文章Spark on YARN

1. 2个工作者实例是指一个具有2个工作进程的工作节点吗?

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

1 Node = 1 Worker process
Run Code Online (Sandbox Code Playgroud)

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

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

检查给定图像中的Worker节点. 集群中的Worker节点

BTW,给定时间点工作节点中执行程序的数量完全取决于集群上的工作负载节点运行多少执行程序的能力.

3.是否有流程图解释火花运行时间?

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

示例代码的Spark运行时

HIH


Lan*_*Lan 30

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

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


小智 7

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

详细了解如何设置多个工作器实例.