项目场景:
选择Standalone模式搭建集群,并检查代码运行结果和Web页面显示
问题描述:
在写好配置文件后用start-all.sh启动该spark集群,三台机器的jps进程都正常,但web页面却没有显示workers和cpu等信息
原因分析:
查看日志文件,master的日志并没有什么异常
workers的日志显示连接不到master
用nmap确认能连接Master主机端口7077
看来是可以连接的,可能是master绑定了本地的ip,查看一下
果然如此,7077端口绑定的是本地回环,导致外界主机无法连接
为什么明明配置了SPARK_MASTER_HOST=ubuntu01还是会绑定本地回环?只好看一下启动脚本是不是有问题。
因为start-all.sh是调用了start-master.sh和start-workers.sh两个脚本,所以直接在start-master.sh内查找原因,注意这段代码:
判断是否配置文件中SPARK_MASTER_HOST为空,如果为空则设置为hostname -f的值
但是我配置了这个,并且hostname -f的就是我配置的
$ hostname -f
ubuntu01
难道是hosts文件的映射有错???
原来ubuntu和centos的hosts文件有点不一样,ubuntu会把本地回环映射到主机名上,虽然下面的代码也配置了ip映射到主机名上。但似乎读到第二行就停止了,导致了7077端口绑定在本地回环上。
解决方案:
将这条绑定代码删除,关闭集群重新启动
轻松秒杀!