我实际上想知道当我执行 sbt run
时发生这种情况的底层机制 Spark 应用程序启动!
这与在独立模式下运行 spark 然后使用 spark-submit 在其上部署应用程序之间有什么区别。
如果有人可以解释 jar 是如何提交的,以及谁在这两种情况下执行任务并分配它,那就太好了。
请帮我解决这个问题,或者指出一些可以让我消除疑虑的读物!
最佳答案
首先阅读this .
熟悉术语、不同角色及其职责后,请阅读以下段落进行总结。
有多种运行 Spark 应用程序的方法(一个 Spark 应用程序只不过是一堆带有入口点的类文件)。
您可以将 spark 应用程序作为单个 java 进程运行(通常用于开发目的)。当您运行 sbt run
时会发生这种情况.
在这种模式下,驱动程序、工作线程等所有服务都在单个 JVM 中运行。
但上述运行方式仅用于开发和测试目的,因为它不会扩展。这意味着您将无法处理大量数据。这是运行 Spark 应用程序的其他方式(独立、mesos、yarn 等)的地方。
现在阅读 this .
在这些模式中,将有不同角色的专用 JVM。驱动程序将作为单独的 JVM 运行,可能有 10 到 1000 个执行器 JVM 运行在不同的机器上(太疯狂了!)。
有趣的是,在单个 JVM 中运行的同一个应用程序将分布在 1000 个 JVM 上运行。 Spark 和底层集群框架负责应用程序的这种分布、这些 JVM 的生命周期、使它们具有容错性等。
关于scala - Spark 应用程序如何开始使用 sbt run。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759641/