集群模式下spark作业是如何提交的?

How are spark jobs submitted in cluster mode?

我知道有 10 google 页的信息,但是,所有信息都告诉我只需将 --master yarn 放在 spark-submit 命令中。但是,在集群模式下,我的本地笔记本电脑怎么知道这意味着什么?假设我有我的笔记本电脑和一个 运行 dataproc 集群。我如何从我的笔记本电脑使用 spark-submit 向这个集群提交作业?

大多数关于 运行 在集群模式下运行 Spark 应用程序的文档都假定您已经在配置了 YARN/Hadoop 的同一集群上(例如,您正在通过 ssh 进入),在在大多数情况下,Spark 会选择适当的本地配置并“正常工作”。

Dataproc 也是如此:如果您通过 ssh 连接到 Dataproc 主节点,则只需 运行 spark-submit --master yarn。更多 detailed instructions 可以在文档中找到。

如果您尝试在笔记本电脑上本地 运行 应用程序,这会更加困难。您将需要设置一个 ssh tunnel to the cluster, and then locally create configuration files 来告诉 Spark 如何通过隧道到达 master。

或者,您可以使用 Dataproc jobs API 将作业提交到集群,而无需直接连接。需要注意的是,您必须使用属性告诉 Spark 在集群模式下 运行 而不是客户端模式 (--properties spark.submit.deployMode=cluster)。请注意,当通过 Dataproc API 提交作业时,客户端模式和集群模式之间的区别并不那么紧迫,因为在任何一种情况下,Spark 驱动程序实际上都会 运行 在集群上(分别在主节点或工作节点上) ),而不是在您本地的笔记本电脑上。