繁体   English   中英

Apache Spark:客户端和群集部署模式之间的差异

[英]Apache Spark: Differences between client and cluster deploy modes

TL; DR:在Spark Standalone群集中,客户端部署模式和群集部署模式之间有什么区别? 如何设置应用程序将在哪种模式下运行?


我们有一个Spark Standalone集群,其中包含三台机器,所有这些机器都带有Spark 1.6.1:

  • 主机,这也是我们使用spark-submit运行应用程序的地方
  • 2台相同的工人机器

Spark文档中 ,我读到:

(...)对于独立群集,Spark当前支持两种部署模式。 在客户端模式下,驱动程序以与提交应用程序的客户端相同的过程启动。 但是,在群集模式下,驱动程序是从群集内的一个Worker进程中启动的,并且客户端进程在履行其提交应用程序的职责而无需等待应用程序完成时立即退出。

但是,通过阅读本文,我并不能真正理解实际的差异,也无法了解不同部署模式的优缺点。

另外,即使我将属性spark.submit.deployMode设置为“ cluster”,使用start-submit启动应用程序时,上下文的Spark UI spark.submit.deployMode显示以下条目:

上下文用户界面

因此,我无法测试两种模式以查看实际差异。 话虽如此,我的问题是:

1)Spark Standalone 客户端部署模式和集群部署模式之间的实际区别是什么? 使用每个优点和缺点的分别是什么?

2)如何使用spark-submit选择我的应用程序将在哪个应用程序上运行?

Spark Standalone客户端部署模式和集群部署模式之间的实际区别是什么? 使用每个优点和缺点的分别是什么?

让我们尝试看看客户端模式和集群模式之间的区别。

客户:

  • 驱动程序在专用进程内的专用服务器(主节点)上运行。 这意味着它拥有所有可用资源来执行工作。
  • 驱动程序将打开一个专用的Netty HTTP服务器,并将指定的JAR文件分发到所有Worker节点(具有很大的优势)。
  • 因为主节点拥有自己的专用资源,所以您不需要为“驱动程序”花费“工作”资源。
  • 如果驱动程序进程终止,则需要外部监视系统以重置其执行。

簇:

  • 驱动程序在群集的工作节点之一上运行。 工人是由领导者选拔的
  • 驱动程序在Worker中作为专用的独立进程运行。
  • 驱动程序占用至少一个核心和一个工作线程中的专用内存(可以配置)。
  • 可以使用--supervise标志从主节点监视驱动程序,并在驱动程序--supervise进行重置。
  • 在集群模式下工作时,与您的应用程序执行相关的所有JAR都必须对所有工作人员公开可用。 这意味着您可以将它们手动放置在每个工人的共享位置或文件夹中。

哪一个更好? 不确定,这实际上是您可以尝试和决定的。 这不是一个更好的决定,您会从前者和后者中受益,这取决于您哪种情况更适合您的用例。

如何使用spark-submit选择我的应用程序将在哪个应用程序上运行

选择运行哪种模式的方法是使用--deploy-mode标志。 从“ Spark配置”页面:

/bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

假设您要通过对主节点执行SSH在EMR中执行Spark提交。 如果提供选项--deploy-mode cluster,则会发生以下情况。

  1. 您将无法在终端中看到详细的日志。
  2. 由于驱动程序不是在主服务器本身中创建的,因此您将无法从终端终止作业。

但是在--deploy-mode客户端的情况下:

  1. 您将能够在终端中看到详细的日志。
  2. 您将能够从终端本身终止作业。

这些是到目前为止我已经注意到的基本内容。

我也有同样的情况,这里的主节点使用一个独立的ec2集群。 在这种设置下,客户端模式是合适的。 在该驱动程序中,它是通过火花提交过程直接启动的,该过程充当群集的客户端。 应用程序的输入和输出已附加到控制台。因此,此模式特别适用于涉及REPL的应用程序。

否则,如果您的应用程序是从远离工作器的计算机上提交的,那么使用群集模式来最小化网络延迟的黑白驱动程序和执行程序是很普遍的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM