在Spark Standalone模式下,存在主节点和工作节点。
这里有几个问题:
- 2个工作程序实例是否意味着一个具有2个工作程序进程的工作程序节点?
- 是每个工作实例都拥有一个特定应用程序的执行程序(用于管理存储,任务),还是一个工作节点拥有一个执行程序?
- 是否有流程图说明spark在运行时如何工作,例如字数统计?
Answers:
我建议您先阅读Spark集群文档,然后阅读更多Cloudera博客文章,以解释这些模式。
您的第一个问题取决于“实例”的含义。节点就是一台机器,没有充分的理由在每台机器上运行多个工作线程。因此,两个工作程序节点通常意味着两台计算机,每个计算机都是一个Spark工作程序。
工人拥有许多执行者,可以执行许多应用程序。一种应用程序在许多工人上都有执行人。
您的第三个问题不清楚。
在Spark Standalone模式下,有主节点和工作节点。
如果我们以独立模式在一个地方代表主人和工人。
如果您对Spark如何与YARN一起使用感到好奇?检查这篇文章Spark on YARN
1.两个工作程序实例是否意味着一个具有两个工作程序进程的工作程序节点?
通常,我们将工作程序实例称为从属实例,因为它是执行spark任务/作业的过程。建议的节点(物理或虚拟机)和工作程序的映射是,
1 Node = 1 Worker process
2.每个工作程序实例是否都拥有特定应用程序(管理存储,任务)的执行程序,还是一个工作程序节点拥有一个执行程序?
是的,如果一个工作程序节点具有足够的CPU,Memory和Storage,则可以容纳多个执行程序(进程)。
检查给定图像中的Worker节点。
顺便说一句,在给定时间点,工作节点中执行程序的数量完全取决于群集上的工作负载以及该节点运行多少个执行程序的能力。
3.是否有流程图说明Spark运行时如何?
如果我们看一下从执行角度星火在任何资源管理器的程序,其中join
2个rdd
S和做一些reduce
操作,然后filter
HIH
我知道这是一个老问题,Sean的回答非常好。我的书面记录是关于SPARK_WORKER_INSTANCES在MrQuestion的评论。如果将Mesos或YARN用作群集管理器,则可以在同一台计算机上使用一个工作程序运行多个执行程序,因此实际上不需要在每台计算机上运行多个工作程序。但是,如果使用独立的群集管理器,当前在每个物理计算机上,每个工作进程仍只允许一个执行程序。因此,如果您有一台超大型计算机并想在其上运行多个执行器,则必须启动多个工作进程。这就是spark-env.sh中的SPARK_WORKER_INSTANCES的用途。默认值为1。如果确实使用此设置,请确保设置SPARK_WORKER_CORES 明确限制每个工作人员的核心,否则每个工作人员将尝试使用所有核心。
这个独立的集群管理器限制应该很快就会消失。根据此SPARK-1706,此问题将在Spark 1.4中修复并发布。
正如Lan所言,使用多个工作程序实例仅在独立模式下相关。您要拥有多个实例的原因有两个:(1)垃圾暂停收集器可能会损害大型JVM的吞吐量(2)大于32 GB的堆大小无法使用CompressedOoops
阅读有关如何设置多个工作程序实例的更多信息。