2015-03-02 28 views
39

该DOC https://spark.apache.org/docs/1.1.0/submitting-applications.html群集部署模式应该使用什么条件而不是客户端?

描述部署模式为:

--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截取):

enter image description here

如果我开球一个火花工作:

./bin/spark-submit \ 
    --class com.driver \ 
    --master spark://MY_MASTER:7077 \ 
    --executor-memory 845M \ 
    --deploy-mode client \ 
    ./bin/Driver.jar 

然后Driver ProgramMY_MASTERfig1MY_MASTER

相反,如果我使用--deploy-mode clusterDriver Program将工作者节点之间共享指定?如果这是真的,那么这是否意味着fig1中的Driver Program框可以被丢弃(因为它不再被利用),因为SparkContext也将在工作节点之间共享?

应该使用什么条件cluster而不是client

回答

78

不,部署模式为client时,驱动程序不一定是主节点。你可以在你的笔记本电脑上运行spark-submit,并且驱动程序可以在你的笔记本电脑上运行。

相反,当部署模式为cluster时,则使用集群管理器(主节点)来查找具有足够可用资源来执行驱动程序的从站。结果,驱动程序将在其中一个从节点上运行。作为执行委托,你不能从驱动程序的结果,它必须存储在一个文件,数据库及其结果等

  • 客户端模式
    • 想找到一份工作结果(动态分析)
    • 更容易开发/调试
    • 控制在您的驱动程序运行
    • 始终保持应用程序:暴露你的星火作业启动的REST服务或Web UI
  • 集群模式
    • 资源分配更容易(让主人决定):消防和忘记
    • 末监控从主Web UI的驱动程序的其他职工一样
    • 停止:一个作业是完成后,分配的资源被释放
+0

在客户端模式的子弹点,为什么你说:?“为振兴/调试更容易” – enneppi 2017-01-26 23:28:48

+3

所以,它听起来像:客户端模式意味着司机是哪个机火花提交我是不是跑了?因此,如果有群集,并且部署模式是客户端,驱动程序将是您提交的计算机,并且只要群集配置正确,它将在群集上并行运行?另外,它听起来像:集群模式意味着您在NEEDS上提交的机器是主节点? – 2017-03-08 14:06:00

5

我认为这可以帮助你understand.In文档https://spark.apache.org/docs/latest/submitting-applications.html 它说:“一种常见的部署策略是从与工作机物理位置相同的网关机器提交你的应用程序(例如,独立EC2集群中的主节点)。在此设置中,客户端模式是适当的。在客户端模式下,驱动程序直接在作为集群客户端的spark-submit过程中启动。应用程序的输入和输出连接到控制台。因此,这种模式特别适用于涉及REPL的应用程序(例如Spark shell)。另外,如果您的应用程序是从远离工作人员机器(例如本地笔记本电脑)提交的机器提交的,则通常使用群集模式来尽量减少驱动程序和执行程序之间的网络延迟。注意:目前不支持Mesos集群或Python应用程序,集群模式“。

1

什么HADR?

  • 在集群模式下,纱重新启动驱动程序,而不杀死执行人。
  • 在客户端模式,如果你的驱动被杀害纱自动杀死所有执行人
相关问题