边缘节点上的火花提交
spark submit on edge node
我正在通过我的边缘节点提交我的 spark-submit 命令。为此,我使用客户端模式,现在我通过我的笔记本电脑访问我的边缘节点(与我的集群在同一个网络上)。我知道驱动程序在我的边缘节点上运行,我想知道的是为什么当我关闭与边缘节点的 ssh 会话时我的 spark-job 会自动挂起?通过 VPN/Wireless 互联网打开 Edge Node putty 连接是否对 spark 作业有任何影响,而不是使用网络内的以太网电缆?目前spark submit作业很慢,虽然集群真的很强大!请帮忙!
谢谢!
您正在使用 --master yarn
提交作业,但您可能没有指定 --deploy-mode cluster
,因此驱动程序应用程序(您的 Java 代码)在本地 运行ning这台 边缘节点 机器。 When choosing --deploy-mode cluster
the driver will 运行 on your cluster and will overall be more robust.
当您关闭 ssh
连接时,spark 作业终止,因为您在关闭连接时杀死了驱动程序,它在您的终端会话中 运行ning。为避免这种情况,您必须在 spark-submit
末尾使用 &
作为后台作业发送命令。例如:
spark-submit --master yarn --class foo bar zaz &
这会将驱动程序发送到后台,并且 stdout
将发送到您的 tty,污染您的会话但不会在您关闭 ssh
连接时终止进程。
但是,如果您不希望它受到如此污染,您可以通过以下方式将 stdout
发送到 /dev/null
:
spark-submit --master yarn --class foo bar zaz &>/dev/null &
但是您不会知道事情失败的原因。您也可以将标准输出重定向到文件而不是 /dev/null
.
最后,一旦这一点足够清楚,我强烈建议不要像这样部署你的 spark 作业,因为 边缘节点中的驱动程序进程 由于任何奇怪的原因而失败都会终止集群中的作业 运行ning。它还有一个奇怪的行为,因为在集群中死亡的作业(一些 运行 时间问题)不会在 边缘节点 中停止或杀死你的驱动程序,这导致了很多如果您不注意手动,那台机器中浪费的内存会杀死那台机器中所有那些旧的驱动程序进程。
所有这一切都可以通过在你的 spark 提交中使用标志 --deploy-mode cluster
来避免。
我正在通过我的边缘节点提交我的 spark-submit 命令。为此,我使用客户端模式,现在我通过我的笔记本电脑访问我的边缘节点(与我的集群在同一个网络上)。我知道驱动程序在我的边缘节点上运行,我想知道的是为什么当我关闭与边缘节点的 ssh 会话时我的 spark-job 会自动挂起?通过 VPN/Wireless 互联网打开 Edge Node putty 连接是否对 spark 作业有任何影响,而不是使用网络内的以太网电缆?目前spark submit作业很慢,虽然集群真的很强大!请帮忙!
谢谢!
您正在使用 --master yarn
提交作业,但您可能没有指定 --deploy-mode cluster
,因此驱动程序应用程序(您的 Java 代码)在本地 运行ning这台 边缘节点 机器。 When choosing --deploy-mode cluster
the driver will 运行 on your cluster and will overall be more robust.
当您关闭 ssh
连接时,spark 作业终止,因为您在关闭连接时杀死了驱动程序,它在您的终端会话中 运行ning。为避免这种情况,您必须在 spark-submit
末尾使用 &
作为后台作业发送命令。例如:
spark-submit --master yarn --class foo bar zaz &
这会将驱动程序发送到后台,并且 stdout
将发送到您的 tty,污染您的会话但不会在您关闭 ssh
连接时终止进程。
但是,如果您不希望它受到如此污染,您可以通过以下方式将 stdout
发送到 /dev/null
:
spark-submit --master yarn --class foo bar zaz &>/dev/null &
但是您不会知道事情失败的原因。您也可以将标准输出重定向到文件而不是 /dev/null
.
最后,一旦这一点足够清楚,我强烈建议不要像这样部署你的 spark 作业,因为 边缘节点中的驱动程序进程 由于任何奇怪的原因而失败都会终止集群中的作业 运行ning。它还有一个奇怪的行为,因为在集群中死亡的作业(一些 运行 时间问题)不会在 边缘节点 中停止或杀死你的驱动程序,这导致了很多如果您不注意手动,那台机器中浪费的内存会杀死那台机器中所有那些旧的驱动程序进程。
所有这一切都可以通过在你的 spark 提交中使用标志 --deploy-mode cluster
来避免。