Apache spark 部署模式客户端和主客户端之间的关系是什么

Apache spark 部署模式客户端和主客户端之间的关系是什么,apache-spark,Apache Spark,我使用spark submit运行spark程序,并使用--部署模式客户端和--主纱线客户端设置参数。我的问题是: 问题1:这是否意味着--deploy mode client的使用与--master warn client的使用相同,两者都表示驱动程序正在客户端上运行?他们之间有什么区别吗 问题2:部署模式客户端是否意味着我的程序只在一台机器上运行,而不在集群上运行,因为我在日志中找到了以下信息:我的所有任务都在本地主机上完成 15/12/29 10:27:28 INFO scheduler.

我使用spark submit运行spark程序,并使用
--部署模式客户端
--主纱线客户端
设置参数。我的问题是:

问题1:这是否意味着
--deploy mode client
的使用与
--master warn client
的使用相同,两者都表示驱动程序正在客户端上运行?他们之间有什么区别吗

问题2:部署模式客户端是否意味着我的程序只在一台机器上运行,而不在集群上运行,因为我在日志中找到了以下信息:我的所有任务都在本地主机上完成

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)

您认为
纱线客户端
部署模式客户端
(主控设置为
纱线
)都在客户端上运行驱动程序是正确的。两者之间没有区别


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

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

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

纱线集群模式下,Spark驱动程序在由集群上的纱线管理的应用程序主进程内运行,客户端可以在启动应用程序后离开

纱线客户端模式下,驱动程序在客户端进程中运行,应用程序主程序仅用于从纱线请求资源

编辑:

看看:

请阅读本文以更好地了解两种不同的纱线模式:
纱线簇
纱线客户端

回到您的问题:

  • 你的假设是正确的

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


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

    关于这类事情的最佳信息来源是Spark网站上的页面

    部署模式控制Spark驱动程序在运行Spark submit(或Spark shell等)的客户端上或在一台工作机器上的位置。它不控制实际任务的执行位置,只控制驱动程序的位置。顺便说一下,“客户端”模式是默认模式

    对于“部署模式”,Spark部署文档中说

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

    [剪下]

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

    --master warn client
    参数具有类似的效果,但有一些纱线的具体情况(除了告诉Spark在纱线簇上运行),主要围绕着配置设置,如Spark.local.dir与纱线等效物


    如果您正在运行纱线,您可以跳过设置
    --driver client
    参数,并使用
    --master warn client
    --master warn cluster

    来提交我的程序:非常感谢much@JustinPihony,我使用以下命令提交我的程序:spark submit--class--部署模式客户端。。。。。为了提交我的程序,我没有设置--master,结果如上所述,任务在localhost上完成。这是否意味着我所有的任务都在一台机器上完成了?我已经根据您的spark-submit更新了我的答案。您能帮我详细回答我的问题吗:Q1和Q2?谢谢。我使用的spark-submit命令是:spark-submit--class--部署模式客户端…,我不使用--master选项,我真的想知道我的作业是否在多个执行器中运行。上面的登录:>15/12/29 10:27:28 INFO scheduler.TaskSetManager:stage 0.0(TID 5)中已完成任务5.0在本地主机上运行726毫秒。为什么所有任务都在本地主机上运行?您的数据集可能太小,一个执行器节点足以处理数据,在您的情况下,它是本地主机。