我想设置 Apache Spark 集群,但无法在端口 7077(Spark Master 正在运行的位置)从工作计算机与主计算机进行通信。
所以我尝试telnet
从工作机器到主机,这就是我所看到的:
root@worker:~# telnet spark 7077
Trying 10.xx.xx.xx...
Connected to spark.
Escape character is '^]'.
Connection closed by foreign host.
该命令立即终止并显示“连接被外部主机关闭”。它不会超时或其他任何事情。
我验证了主机正在侦听端口,并且telnet
输出显示“已连接到 Spark”。 ——这也意味着连接成功。
这种行为的原因可能是什么?我想知道连接的关闭是否可能是我无法从工作计算机与主计算机进行通信的原因。
答案1
正在侦听端口 7077 上的连接的进程正在接受连接,然后立即关闭连接。问题出在应用程序的代码或配置中,而不是系统本身。
答案2
我刚刚了解到一些虚拟服务器中的奇怪行为,尤其是那些运行 NAT 的虚拟服务器。您连接到虚拟服务器对外暴露的端口;然后服务器尝试将连接转发到目标;目标拒绝。因此 NAT 将关闭您的连接,且不会发出任何消息。拔出你的头发试图弄清楚发生了什么事。这与之前的答案非常相似;来源是虚拟主机本身的交互。
最可能的原因是有人正在使用该端口,并且运行的应用程序一次仅接受一个连接,并拒绝任何其他连接。
答案3
该应用程序具有只能从本地主机连接的策略限制。与elasticsearch 相同的“问题”。您可以检查您的应用程序配置,也可以创建隧道。做
ssh -N -L 7077:127.0.0.1:7077 userxy@spark
然后在你的机器上:
telnet 127.0.0.1 7077
答案4
当我们尝试调试为什么从主机发送电子邮件(通过 Python 代码)失败时,我们遇到了这个错误。事实证明,这是由于该特定主机的邮件服务器上的邮件队列已满。