项目场景
利用ZooKeeper,搭建Spark Standalone-HA集群。
问题描述
在启动好zk和spark后去web-ui查看时出现错误
查看日志后发现8080端口被占用(因为我的spark配置文件中指定的wei-ui端口为8080),于是写换到了8081
原因分析
如果只是启动ZK,会发现8080端口被使用,说明是ZK占用了8080端口
查看ZK的日志发现是一个叫AdminServer的东西在使用8080端口,并且路由地址为/commands
这个AdminServer是什么,为什么之前没见过,我在官网找到了一些说明可以进行解释
- The AdminServer
- 一个运行在8080端口的嵌入式Jetty服务,为一些命令提供了HTTP接口
- 通过 "http://localhost:8080/commandsp[command name]" 的形式可以查看命令
- AdminServer configuration
- 服务的相关设置如:开启/关闭服务、修改addr、port、command url等
解决方案
修改端口
按照官网的配置,我们可以修改端口
conf/zoo.cfg
admin.serverPort=8060
查看web-ui,服务正常开启
注意:有一些端口是受限制的,因为它们已经绑定了一些特殊服务,例如22端口是ssh服务,即使设置了端口也不能在浏览器打开web界面
具体的受限制的端口列表在这里查看:https://neo4j.com/developer/kb/list-of-restricted-ports-in-browsers/
但也可以通过修改浏览器设置的方式,允许web使用这些端口
关闭服务
如果觉得这个服务没用的话,也可以在配置文件中关闭
admin.enableServer=false
spark的web正常打开
修改spark端口
conf/spark-env.sh
SPARK_MASTER_WEBUI_PORT=8888