我使用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)
答案 0 :(得分:0)
你是正确的yarn-client
和deploy-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
请查看此cloudera文章,以便更好地了解两种不同的纱线模式:YARN Cluster
和YARN Client
。
回到你的疑问:
您的假设是正确的。
它应该在群集上运行。您的数据集是否足够大,可以在群集中不同节点的多个执行程序上运行?
除了应该运行驱动程序之外,您的作业应该在群集的不同节点上的多个执行程序中运行。
答案 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