Spark在边缘节点上提交

And*_*ith 4 hadoop hdfs hadoop-yarn apache-spark

我正在通过我的边缘节点提交我的 Spark-submit 命令。为此,我使用客户端模式,现在我通过笔记本电脑访问我的边缘节点(与我的集群位于同一网络上)。我知道驱动程序在我的边缘节点上运行,我想知道的是,为什么当我关闭与边缘节点的 ssh 会话时,我的 Spark 作业会自动挂起?与使用网络内的以太网电缆相比,通过 VPN/无线互联网打开边缘节点 putty 连接是否会对 Spark 作业产生影响?目前,尽管集群非常强大,但 Spark 提交作业非常慢!请帮忙!

谢谢!

Nav*_*rro 5

您正在提交作业,--master yarn但可能没有指定,因此驱动程序应用程序(您的 Java 代码)在此边缘节点--deploy-mode cluster计算机上本地运行。当选择驱动程序时,该驱动程序将在您的集群上运行,并且总体上会更加健壮。--deploy-mode cluster

\n\n

当您关闭连接时,火花作业就会终止ssh,因为您在执行此操作时杀死了驱动程序,它正在您的终端会话上运行。为了避免这种情况,您必须&spark-submit. 例如:

\n\n

spark-submit --master yarn --class foo bar zaz &

\n\n

这会将驱动程序发送到后台,并将stdout发送到您的 tty,污染您的会话,但在您关闭连接时不会杀死该进程ssh。\n如果您不\xc2\xb4t 希望它被如此污染,您可以发送stdout通过/dev/null这样做:

\n\n

spark-submit --master yarn --class foo bar zaz &>/dev/null &

\n\n

然而你不会\xc2\xb4知道为什么事情会失败。您也可以将标准输出重定向到文件而不是/dev/null.

\n\n

最后,一旦这一点足够清楚,我强烈建议不要像这样部署你的 Spark 作业,因为边缘节点中的驱动程序进程由于任何奇怪的原因而失败将终止集群中运行的作业。它还有一个奇怪的行为,因为集群中的作业(某些运行时问题)不会停止或杀死边缘节点中的驱动程序,如果您不小心,这会导致该机器中的大量内存浪费手动终止该计算机中的所有旧驱动程序进程。\n通过--deploy-mode cluster在 Spark 提交中使用该标志可以避免所有这些情况。

\n