启动Spark Shell时遭遇java.net.UnknownHostException错误求助
解决Spark Shell启动时的
UnknownHostException: jupyter错误 问题场景
我按照教程安装Spark后,执行spark-shell时抛出了java.net.UnknownHostException: jupyter: jupyter: Name or service not known的错误,虽然最后Spark Shell还是正常启动(能执行1+1得到结果),但我困惑为什么Spark会去查找jupyter这个主机名——毕竟只是启动本地Shell而已。
附上我的配置信息:
.bashrc配置
export PATH=/home/noel/pycharm/jre/bin:$PATH export HADOOP_HOME=/home/xxx/hadoop_275 export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH export SPARK_HOME=/home/xxx/spark/spark22_hadoop27 export PATH=$SPARK_HOME/bin:$PATH
/etc/hosts文件内容
127.0.0.1 localhost #127.0.1.1 deep-learning # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
问题原因
Spark启动时会尝试获取当前机器的主机名并解析对应IP地址,从命令行提示符n@jupyter:~$能看出,你的机器当前主机名就是jupyter,但/etc/hosts文件里并没有把jupyter映射到本地IP(比如127.0.0.1或内网IP),导致Java的InetAddress.getLocalHost()方法找不到解析记录,所以抛出了这个错误。
虽然Shell能启动,但这个错误会影响后续Spark的网络相关功能(比如分布式任务的节点通信),建议修复。
解决方法
修改/etc/hosts文件,将主机名jupyter映射到本地IP即可:
- 用sudo权限打开
/etc/hosts文件:
sudo nano /etc/hosts
- 在现有本地IP行后添加
jupyter,或者单独新增一行:
# 方式一:在localhost行后追加 127.0.0.1 localhost jupyter # 方式二:单独新增一行(Debian/Ubuntu系统常用) 127.0.1.1 jupyter
- 保存并退出编辑器,重新启动Spark Shell,错误就会消失。
如果想确认当前主机名,可执行命令:
hostname
输出应该就是jupyter,和命令行提示符一致。
内容的提问来源于stack exchange,提问作者tensor
相关产品推荐
相关产品推荐

