部署模式客户端和主服务器客户端之间有什么关系

时间:2015-12-29 02:58:02

标签: apache-spark

我使用spark-submit来运行我的spark程序,并使用--deploy-mode client--master yarn-client来设置参数。我的问题是:

Q1:这是否意味着--deploy-mode client的使用和--master yarn-client的使用是相同的,它们都表示驱动程序在客户端上运行?它们之间有什么区别吗?

Q2:--deploy-mode客户端是否意味着我的程序只在一台计算机上运行但在群集上运行,因为我在日志中找到了以下信息:我的所有任务都在localhost上完成。

15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 5.0 in stage 0.0 (TID 5) in 726 ms on localhost (1/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 6.0 in stage 0.0 (TID 6) in 727 ms on localhost (2/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 3.0 in stage 0.0 (TID 3) in 730 ms on localhost (3/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 737 ms on localhost (4/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 4.0 in stage 0.0 (TID 4) in 739 ms on localhost (5/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 749 ms on localhost (6/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 2.0 in stage 0.0 (TID 2) in 744 ms on localhost (7/8)
15/12/29 10:27:28 INFO scheduler.TaskSetManager: Finished task 7.0 in stage 0.0 (TID 7) in 741 ms on localhost (8/8)

3 个答案:

答案 0 :(得分:0)

你是正确的yarn-clientdeploy-mode client(主设置为yarn我假设)都在客户端上运行驱动程序。这两者没有区别。

关于您的第二个问题,deploy-mode client仅作为在客户端上运行驱动程序的信号。任务将根据您的其他设置进行分发。因此,您需要设置--master yarn或将环境设置为yarn export SPARK_YARN_MODE=true。否则它将默认为localhost

答案 1 :(得分:0)

部署模式可区分驱动程序进程的运行位置。

有两种部署模式可用于在YARN上启动Spark应用程序。

yarn-cluster 模式下,Spark驱动程序在应用程序主进程内运行,该进程由群集上的YARN管理,客户端可以在启动应用程序后消失。

yarn-client 模式下,驱动程序在客户端进程中运行,应用程序主服务器仅用于从YARN请求资源

修改

看看: http://spark.apache.org/docs/latest/running-on-yarn.html

enter image description here

请查看此cloudera文章,以便更好地了解两种不同的纱线模式:YARN ClusterYARN Client

回到你的疑问:

  1. 您的假设是正确的。

  2. 它应该在群集上运行。您的数据集是否足够大,可以在群集中不同节点的多个执行程序上运行?

  3. 除了应该运行驱动程序之外,您的作业应该在群集的不同节点上的多个执行程序中运行。

答案 2 :(得分:0)

关于此类事情的最佳信息来源是Spark网站上的Submitting Applications页面。

部署模式控制Spark驱动程序所在的位置,可以在运行spark-submit(或spark-shell等)的客户端上,也可以在其中一台工作计算机上。它不控制实际任务的执行位置,只控制驱动程序所在的位置。 "客户机"顺便提一下,模式是默认的。

对于" deploy-mode",Spark部署文档说

  

常见的部署策略是从a。提交您的应用程序   与您的工作人员物理位置相同的网关机器   机器(例如独立EC2集群中的主节点)。在这   设置,客户端模式是合适的。在客户端模式下,驱动程序是   直接在火花提交过程中启动,作为一个   客户端到集群。应用程序的输入和输出是   附在控制台上。

     

[剪断]

     

或者,如果您的应用程序是从远程机器提交的   从工作机器(例如,在您的笔记本电脑上本地),这是常见的   使用群集模式来最小化驱动程序之间的网络延迟   和遗嘱执行人。

--master yarn-client参数具有类似的效果,但具有一些YARN细节(除了告诉Spark在YARN集群上运行),主要是围绕配置设置,如spark.local.dir与YARN等效。

如果您正在运行YARN,则可以跳过设置--driver client参数,然后使用--master yarn-client--master yarn-cluster