Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 应该在什么条件下使用集群部署模式而不是客户端?_Apache Spark - Fatal编程技术网

Apache spark 应该在什么条件下使用集群部署模式而不是客户端?

Apache spark 应该在什么条件下使用集群部署模式而不是客户端?,apache-spark,Apache Spark,医生 将部署模式描述为: --deploy-mode: Whether to deploy your driver on the worker nodes (cluster) or locally as an external client (client) (default: client) 将此图图1用作指南(摘自): 如果我开始一项有火花的工作: ./bin/spark-submit \ --class com.driver \ --master spark://MY_MAST

医生

将部署模式描述为:

--deploy-mode: Whether to deploy your driver on the worker nodes (cluster) or locally as an external client (client) (default: client)
将此图
图1
用作指南(摘自):

如果我开始一项有火花的工作:

./bin/spark-submit \
  --class com.driver \
  --master spark://MY_MASTER:7077 \
  --executor-memory 845M \
  --deploy-mode client \
  ./bin/Driver.jar
然后,
驱动程序
将是
我的主程序
,如图1所示

如果改用
--deploy mode cluster
,那么
驱动程序将在工作节点之间共享?如果这是真的,那么这是否意味着
fig1
中的
Driver Program
框可以删除(因为它不再使用),因为
SparkContext
也将在工作节点之间共享


应该使用
集群
来代替
客户端

否,当部署模式为
客户端
时,驱动程序不一定是主节点。您可以在笔记本电脑上运行spark submit,驱动程序也可以在笔记本电脑上运行

相反,当部署模式为集群时,则使用集群管理器(主节点)查找具有足够可用资源的从节点,以执行驱动程序。因此,驱动程序将在其中一个从节点上运行。由于它的执行是委托的,您无法从驱动程序获得结果,它必须将其结果存储在文件、数据库等中

  • 客户端模式
    • 想要获得作业结果(动态分析)
    • 易于开发/调试
    • 控制驱动程序运行的位置
    • 始终启动应用程序:将Spark作业启动器作为REST服务或Web UI公开
  • 集群模式
    • 更易于资源分配(由主控决定):开火并忘记
    • 像其他工作人员一样,从主Web UI监视驱动程序
    • 结束时停止:完成一个作业,释放分配的资源

    • 我想这可能有助于您理解文件中的内容 它说:“一种常见的部署策略是从网关计算机提交应用程序,该网关计算机与您的工作计算机(例如,独立EC2集群中的主节点)物理上位于同一位置。在此设置中,客户端模式是合适的。在客户端模式中,驱动程序直接在spark submit进程中启动,该进程充当群集的客户端。应用程序的输入和输出连接到控制台。因此,此模式特别适合于涉及REPL的应用程序(例如spark shell)

      或者,如果您的应用程序是从远离工作机器的机器(例如,在笔记本电脑上本地)提交的,则通常使用群集模式来最小化驱动程序和执行程序之间的网络延迟。请注意,目前Mesos群集或Python应用程序不支持群集模式。“

      HADR如何

      • 在集群模式下,纱线重新启动驱动程序而不会杀死执行器
      • 在客户端模式下,如果您的驱动程序被杀死,纱线会自动杀死所有执行器

      在客户端模式下,为什么说“更易于开发/调试”?因此,听起来像:客户端模式意味着驱动程序是运行spark submit的机器?所以,如果有一个集群,部署模式是client,那么驱动程序就是您提交的机器,只要集群配置正确,它就会在集群上并行运行?另外,它听起来像:集群模式意味着您提交的机器需要成为主节点?