文档https://spark.apache.org/docs/1.1.0/submitting-applications.html
将deploy-mode描述为:
--deploy-mode: Whether to deploy your driver on the worker nodes (cluster) or locally as an external client (client) (default: client)
使用此图表fig1
作为指南(摘自http://spark.apache.org/docs/1.2.0/cluster-overview.html):
如果我启动Spark工作:
./bin/spark-submit \
--class com.driver \
--master spark://MY_MASTER:7077 \
--executor-memory 845M \
--deploy-mode client \
./bin/Driver.jar
然后Driver Program
将MY_MASTER
fig1
MY_MASTER
中指定的--deploy-mode cluster
如果我使用Driver Program
,那么Driver Program
将在工作节点之间共享?如果这是真的,那么这是否意味着fig1
中的SparkContext
框可以被删除(因为它不再被使用),因为cluster
也将在工作节点之间共享?< / p>
应该{{1}}使用client
代替{{1}}?
答案 0 :(得分:90)
不,当部署模式为client
时,驱动程序不一定是主节点。您可以在笔记本电脑上运行spark-submit,并在您的笔记本电脑上运行驱动程序。
相反,当部署模式为cluster
时,集群管理器(主节点)用于查找具有足够可用资源的从站以执行驱动程序。结果,驱动程序将在其中一个从节点上运行。由于委托执行,您无法从驱动程序中获取结果,它必须将结果存储在文件,数据库等中。
答案 1 :(得分:5)
我认为这可能有助于您理解。在文档https://spark.apache.org/docs/latest/submitting-applications.html中 它说&#34;常见的部署策略是从与您的工作机器物理位于同一位置的网关机器(例如,独立EC2集群中的主节点)提交您的应用程序。在此设置中,客户端模式是合适的。在客户端模式下,驱动程序直接在spark-submit进程中启动,该进程充当群集的客户端。应用程序的输入和输出附加到控制台。因此,此模式特别适用于涉及REPL的应用程序(例如Spark shell)。
或者,如果您的应用程序是从远离工作机器的计算机(例如笔记本电脑本地计算机)提交的,则通常使用群集模式来最小化驱动程序和执行程序之间的网络延迟。请注意,Mesos群集或Python应用程序当前不支持群集模式。&#34;
答案 2 :(得分:0)
HADR怎么样?