Spark Web UI(4040端口)无法连接,页面打不开问题解决

你在这里

Spark Web UI(4040端口)无法连接,页面打不开问题解决

Spark提供一种Web方式查看工作状态的监控方式,即Web UI。通过其Web界面可以方便的查询到Spark的任务运行详情,其访问方式是通过在浏览器中访问http://<driver-node>:4040 。(其中<driver-node>是Spark节点的IP地址)。
然而ZZKOOK在Centos7下访问Web UI时,一切进展的并不那么顺利。故事的是这样开始的:
(一)启动Spark
在Centos7的shell下输入如下命令,启动Spark:
$ $SPARK_HOME/bin/spark-shell --master local[2]
其中,--master用于指定服务器地址,local表示本地运行,[2]为可选项,表示启动两个工作线程。
启动后,shell下出现如下提示信息:
原本这样就表示Spark已经正常启动,ZZKOOK在其中用交互式scala编程写了一个Hello World,也能正常运行。然而,当打开Web UI时,得到的确是页面无法访问,这有点让人挠头。
四处搜索了一下,初装者们遇到了各种情况,然而Web UI无法连接的情况却不多,即便有,也不是在我这种单机实验环境中遇到的情况。那就只好自己排查是什么环节组织的页面访问。
(二)Web UI页面无法打开问题排查
1)首先,查看Spark的shell提示信息,其中有如下内容:
Spark context Web UI available at http://192.168.211.132:4040 #其中IP地址为Spark服务器地址
这一信息提示Spark认为Web UI已经正常启动,能够对外提供服务了,问题应该出在Spark外部。
2)查看centos网络端口占用情况,运行以下命令结果如下图所示:
$ netstat -ntlp
这表明4040端口在监听,并且是通过TCP6,由于运行在Java虚拟机上,因此显示的是Java进程,PID为2989。这一切任属于正常,问题还没找到。
3)查看centos的默认安全服务firewall,运行以下命令查看其运行状态:
$ systemctl status firewalld
下面是输出信息
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded(/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2017-11-12 19:23:12 CST; 18h ago
Docs: man:firewalld(1)
Main PID: 640 (firewalld)
CGroup: /system.slice/firewalld.service
           └─640 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
 
11月 12 19:23:06 spark systemd[1]: Starting firewalld - dynamic firewall daemon...
11月 12 19:23:12 spark systemd[1]: Started firewalld - dynamic firewall daemon.
11月 12 19:23:14 spark firewalld[640]: WARNING: ICMP type 'beyond-scope' is not supported by...v6.
11月 12 19:23:14 spark firewalld[640]: WARNING: beyond-scope: INVALID_ICMPTYPE: No supported...me.
11月 12 19:23:14 spark firewalld[640]: WARNING: ICMP type 'failed-policy' is not supported b...v6.
11月 12 19:23:14 spark firewalld[640]: WARNING: failed-policy: INVALID_ICMPTYPE: No supporte...me.
11月 12 19:23:14 spark firewalld[640]: WARNING: ICMP type 'reject-route' is not supported by...v6.
11月 12 19:23:14 spark firewalld[640]: WARNING: reject-route: INVALID_ICMPTYPE: No supported...me.
Hint: Some lines were ellipsized, use -l to show in full.
上面的状态信息说明不了问题,警告只是表面系统不支持IPv6,因此ICMPv6的拒绝规则是不支持的。但还是感觉问题出在firewall,于是试着关闭firewall,运行如下命令:
$ systemctl stop firewalld.service
之后再次通过浏览器访问http://192.168.211.132:4040,终于Web UI如期而至。
 
(三)问题解决
上面的实验充分证明了时firewall阻止了Spark Web UI,因此再次启动防火墙,并在firewall中加入对Spark 4040端口的访问许可,并重新加载防火墙:
$ systemctl start firewalld
$ firewall-cmd --permanent --zone=public --add-port=4040/tcp
success
$ firewall-cmd --reload
success
 
重新访问Web UI,页面也能正常加载,至此问题解决。
著作权归作者所有。商业转载请联系本站作者获得授权,非商业转载请注明出处 ZZKOOK

您可能感兴趣的文章

登录以发表评论

评论

希望无私分享的人越来越多。

 
159
未遂平生的头像

我还真看进去了

 
140
且听龙吟的头像

内容还是不错滴

 
143
温暖是你的头像

写的我都看懂了。

 
155
千钟粟的头像