在阿里云轻量应用服务器上安装 Spark 时遇到了一个异常:
Exception: Java gateway process exited before sending its port number
,搜遍谷歌百度无法解决,花费数小时终于解决,特此记录。
问题及解决方案
首先,先来看看这个 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 了。
感想
这个问题只需读一读报错日志即可解决,但我一开始抱着偷懒的心态,首先想着通过搜索引擎获取现有的解决方案,在搜索、浏览信息和尝试解决方案上花费了大量时间,但最终还是没能解决问题。最终还是需要通过阅读错误日志,来定位真正的错误原因,从而针对性的解决问题,这才是最高效的解决方案。