在 Spark Standalone 模式下,有主节点和工作节点。
这里有几个问题:
2 个工作实例是否意味着一个具有 2 个工作进程的工作节点?是每个工作程序实例都为特定应用程序(管理存储、任务)持有一个执行程序,还是一个工作程序节点持有一个执行程序?是否有解释 spark 在运行时如何工作的流程图,例如字数?
我建议先阅读 Spark cluster docs,但更重要的是,此 Cloudera blog post 解释了这些模式。
您的第一个问题取决于“实例”的含义。节点是一台机器,没有充分的理由在每台机器上运行多个工作人员。因此,两个工作节点通常意味着两台机器,每台机器都是 Spark 工作人员。
对于许多应用程序,工人拥有许多执行者。一个应用程序有许多工人的执行者。
你的第三个问题不清楚。
扩展到其他很好的答案,我想用几张图片来描述。
在 Spark Standalone 模式下,有主节点和工作节点。
如果我们在一个地方同时代表 master 和 worker(如果 CPU 和内存可用,每个 worker 可以有多个 executor)以用于独立模式。
https://i.stack.imgur.com/rv96i.png
如果您对 Spark 如何与 YARN 一起工作感到好奇?检查这篇文章Spark on YARN
1. 两个worker实例是指一个worker节点有两个worker进程吗?
通常,我们将工作实例称为从属实例,因为它是执行 spark 任务/作业的进程。节点(物理机或虚拟机)和工作人员的建议映射是,
1 Node = 1 Worker process
2. 每个工作程序实例是否为特定应用程序(管理存储、任务)持有一个执行程序,还是一个工作程序节点持有一个执行程序?
是的,如果一个工作节点有足够的 CPU、内存和存储空间,它可以拥有多个执行程序(进程)。
https://i.stack.imgur.com/D7pcV.png
顺便说一句,在给定时间点,工作节点中的执行程序数量完全取决于集群上的工作负载和节点运行多少执行程序的能力。
3. 是否有流程图说明 spark 运行时如何?
如果我们从 Spark 的角度查看程序的任何资源管理器的执行情况,其中 join
两个 rdd
并执行一些 reduce
操作,然后 filter
https://i.stack.imgur.com/SXQHj.jpg
HIH
我知道这是一个老问题,肖恩的回答非常好。我的文章是关于 MrQuestion 评论中的 SPARK_WORKER_INSTANCES。如果你使用 Mesos 或 YARN 作为你的集群管理器,你可以在一台机器上运行多个执行器,只有一个 worker,因此实际上没有必要在每台机器上运行多个 worker。但是,如果您使用独立的集群管理器,目前它仍然只允许每个物理机器上的每个工作进程有一个执行器。因此,如果您有一台超大型机器并想在其上运行多个执行器,则必须启动多个工作进程。这就是 spark-env.sh 中的 SPARK_WORKER_INSTANCES 的用途。默认值为 1。如果您确实使用此设置,请确保您明确设置 SPARK_WORKER_CORES 以限制每个工作人员的核心,否则每个工作人员将尝试使用所有核心。
这种独立的集群管理器限制应该很快就会消失。根据此SPARK-1706,此问题将在 Spark 1.4 中修复并发布。
正如 Lan 所说,使用多个工作实例仅在独立模式下相关。您想要多个实例的原因有两个:(1) 垃圾暂停收集器可能会损害大型 JVM 的吞吐量 (2) >32 GB 的堆大小不能使用 CompressedOoops
阅读有关 how to set up multiple worker instances 的更多信息。
不定期副业成功案例分享