我实际上想知道当我执行sbt run
火花应用程序启动时这种情况发生的基本机制!
在独立模式下运行spark并使用spark-submit在其上部署应用程序之间有什么区别。
如果有人可以解释jar的提交方式以及由谁完成任务并在两种情况下分配任务,那就太棒了。 请帮我解决这个问题,或者指出一些我可以清除疑惑的内容!
答案 0 :(得分:3)
首先,阅读this。
熟悉术语,不同角色及其职责后,请阅读以下段落进行总结。
运行spark应用程序有不同的方法(spark应用程序只是一堆带入口点的类文件)。
您可以将spark应用程序作为单个java进程运行(通常用于开发目的)。运行sbt run
时会发生这种情况。
在此模式下,驱动程序,工作程序等所有服务都在单个JVM中运行。
但是上述运行方式仅用于开发和测试目的,因为它不会扩展。这意味着您无法处理大量数据。这是运行spark应用程序的其他方式进入图片(Standalone,mesos,yarn等)。
现在阅读this。
在这些模式中,将有专用的JVM用于不同的角色。驱动程序将作为单独的JVM运行,可能有10到1000个执行程序JVM在不同的机器上运行(Crazy right!)。
有趣的是,在单个JVM中运行的相同应用程序将被分发以在1000个JVM上运行。 Spark和底层集群框架对这些JVM的应用程序,生命周期以及容错等进行了分析。