apachespark:客户机和集群部署模式的区别

9cbw7uwe  于 2021-06-01  发布在  Hadoop
关注(0)|答案(3)|浏览(530)

热释光;dr:在spark独立集群中,客户机和集群部署模式之间有什么区别?如何设置应用程序运行的模式?
我们有一个带有三台机器的spark独立群集,它们都带有spark 1.6.1:
一个主计算机,也是我们的应用程序运行的地方 spark-submit 2台相同的工人机器
从spark文档中,我看到:
(…)对于独立集群,spark目前支持两种部署模式。在客户机模式下,驱动程序的启动过程与提交应用程序的客户机相同。但是,在集群模式下,驱动程序是从集群中的一个工作进程启动的,客户机进程在完成提交应用程序的职责后立即退出,而不必等待应用程序完成。
但是,通过阅读本文,我并没有真正理解实际的差异,也没有了解不同部署模式的优缺点。
另外,当我使用start submit启动应用程序时,即使我设置了属性 spark.submit.deployMode 对于“集群”,我的上下文的spark ui显示以下条目:

因此,我无法测试这两种模式,以看到实际的差异。话虽如此,我的问题是:
1) spark独立客户端部署模式和集群部署模式之间的实际区别是什么?使用每种方法的利弊是什么?
2) 如何使用 spark-submit ?

wb1gzix0

wb1gzix01#

我也有同样的场景,这里主节点使用独立的ec2集群。在此设置中,客户端模式是合适的。在spark submit进程中,驱动程序直接启动,该进程充当集群的客户机。应用程序的输入和输出连接到控制台。因此,这种模式特别适用于涉及repl的应用程序。
否则,如果您的应用程序是从远离工作机的机器提交的,那么使用集群模式来最小化网络延迟b/w driver&executor是很常见的。

jutyujz0

jutyujz02#

假设您将在emr中执行spark submit,方法是对主节点执行ssh。如果您提供选项--deploy mode cluster,那么将发生以下事情。
您将无法在终端中看到详细的日志。
由于驱动程序不是在主机本身中创建的,因此您将无法从终端终止作业。
但在部署模式客户机的情况下:
您将能够在终端中看到详细的日志。
您将能够从终端本身终止作业。
这些是我迄今为止注意到的基本问题。

wkftcu5l

wkftcu5l3#

spark独立客户端部署模式和集群部署模式之间的实际区别是什么?使用每种方法的利弊是什么?
让我们看看客户机模式和集群模式之间的区别。
客户:
驱动程序在专用进程内的专用服务器(主节点)上运行。这意味着它拥有执行工作所需的所有可用资源。
驱动程序打开一个专用的nettyhttp服务器,并将指定的jar文件分发给所有工作节点(很大的优势)。
因为主节点有自己的专用资源,所以不需要为驱动程序“花费”工人资源。
如果驱动程序进程死亡,您需要一个外部监视系统来重置它的执行。
集群:
驱动程序在集群的一个工作节点上运行。工人由总领导挑选
驱动程序在工作进程中作为专用的独立进程运行。
驱动程序至少占用一个内核和一个工作进程的专用内存(可以配置)。
可以使用 --supervise 标记并在其死亡时重置。
在集群模式下工作时,所有与应用程序执行相关的jar都需要对所有工作人员公开。这意味着您可以手动将它们放置在共享位置或每个worker的文件夹中。
哪一个更好?不确定,这实际上是由你来试验和决定的。这并不是一个更好的决定,你从前者和后者中获得了一些东西,这取决于你看哪一个更适合你的用例。
如何使用 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]

相关问题