问题描述
今天在AWS上部署spark时,发现报错:
java.net.UnknownHostException
在我们自己写的spark程序中,出现这个异常的语句一般是:
sparkConf.setMaster("local[4]")
即配置sparkConf时候,设置master为localhost时。
问题解决
现有方案
在写blog之前,在网上查现有的方案,结果告诉我修改hosts文件。。。
其实如果我们的hosts文件没有将localhost设置为127.0.0.1的化,的确会报这个异常。
host文件在/etc/hosts这里,在其中加入:
127.0.0.1 localhost
不过,几乎所有的linux安装好之后,都会在这个文件存在localhost的默认记录,大多数情况并不适用。
spark配置文件
其实,很多情况是我们的spark配置文件存在问题:
spark配置文件目录在 spark根目录下的conf目录中。
首先,我们要确保存在slave文件。拷贝同目录下的slave.template 为slave文件,对于单机部署,这里面只需要有localhost一条记录即可。
然后,修改spark-env.sh中的记录:
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
SPARK_LOCAL_IP=127.0.0.1
不过,我估计后者改不改无所谓,但是slave文件要有。