Exception: Java gateway process exited before sending its port number 解决方案

在阿里云轻量应用服务器上安装 Spark 时遇到了一个异常: Exception: Java gateway process exited before sending its port number,搜遍谷歌百度无法解决,花费数小时终于解决,特此记录。

问题及解决方案

  首先,先来看看这个 Exception:


Exception 本体

  网上已有大量关于此 Exception 的问题、issues,但经过仔细筛选之后,发现和我遇到的这个问题还是有区别的。现有的问题大多是使用 PyCharm 或 Jupyter notebook 时遇到的问题,而我遇到这个 Exception 则是在执行 pyspark 命令时。

  因此需要自己找一下问题所在了,这时候就需要读一读报错的日志了:


日志

  从日志中可以很明显的看到:
Caused by: java.net.UnknownHostException: iZbp1a349oujk6t83ot6u1Z: iZbp1a349oujk6t83ot6u1Z: Name or service not known
  其中 iZbp1a349oujk6t83ot6u1Z 是服务器的主机名称,那么这个问题即是 Spark 无法识别出我的主机名导致的了,对于这种情况,我想到的一个方案是在 /etc/hosts 文件添加映射:

vim /etc/hosts

  在文件中添加一行:

127.0.0.1       iZbp1a349oujk6t83ot6u1Z

  保存退出。再次执行 pyspark 即可正常启动 pyspark 了。

pyspark 成功启动

感想

  这个问题只需读一读报错日志即可解决,但我一开始抱着偷懒的心态,首先想着通过搜索引擎获取现有的解决方案,在搜索、浏览信息和尝试解决方案上花费了大量时间,但最终还是没能解决问题。最终还是需要通过阅读错误日志,来定位真正的错误原因,从而针对性的解决问题,这才是最高效的解决方案。

你可能感兴趣的:(Exception: Java gateway process exited before sending its port number 解决方案)