spark 应用程序如何使用 sbt run 启动。

Posted

技术标签:

【中文标题】spark 应用程序如何使用 sbt run 启动。【英文标题】:How a spark application starts using sbt run. 【发布时间】:2017-05-03 12:08:41 【问题描述】:

我实际上想知道当我执行sbt run 时,spark 应用程序启动时发生这种情况的底层机制!

这与在独立模式下运行 spark 然后使用 spark-submit 在其上部署应用程序有什么区别。

如果有人可以解释 jar 是如何提交的,以及在这两种情况下谁来完成任务并分配它,那就太好了。 请帮我解决这个问题或指出一些可以让我消除疑虑的阅读!

【问题讨论】:

【参考方案1】:

首先,阅读this。

一旦您熟悉了术语、不同的角色及其职责,请阅读以下段落进行总结。

运行 spark 应用程序有多种不同的方式(spark 应用程序不过是一堆带有入口点的类文件)。

您可以将 spark 应用程序作为单个 java 进程运行(通常用于开发目的)。这就是运行sbt run 时发生的情况。 在这种模式下,驱动程序、工作程序等所有服务都在单个 JVM 中运行。

但上述运行方式仅用于开发和测试目的,因为它不会扩展。这意味着您将无法处理大量数据。这就是运行 spark 应用程序的其他方式(独立、mesos、yarn 等)发挥作用的地方。

现在阅读this。

在这些模式中,将有不同角色的专用 JVM。驱动程序将作为一个单独的 JVM 运行,可能有 10 到 1000 个执行程序 JVM 在不同的机器上运行(太疯狂了!)。

有趣的是,在单个 JVM 中运行的同一个应用程序将分布在数千个 JVM 上运行。 Spark 和底层集群框架负责应用程序的分布、这些 JVM 的生命周期、使其具有容错性等。

【讨论】:

以上是关于spark 应用程序如何使用 sbt run 启动。的主要内容,如果未能解决你的问题,请参考以下文章

使用 sbt-spark-package 插件了解 build.sbt

使用 sbt test 运行时 Spark 测试失败

如何配置 sbt 在运行应用程序时加载资源?

SBT编译spark-redis-master

SBT编译spark-redis-master

在IntelliJ sbt shell中打破Play'run'