今天安装了一个高可用的spark集群,但是启动之后,每个节点上用jps命令都可以查看到有Master和Worker进程,但是登录UI界面却没有Worker信息,查看Worker节点上的日志文件,发现竟然出错了,错误如下:
错误显示Worker无法连接到Master节点。
找了好长时间,终于发现了问题,出现这个错误的原因就是端口的问题。
我们知道,spark集群上Master节点和Worker节点RPC通信的端口是7077,这里无法连接到Master节点,说明是端口或者Ip的问题。我安装的集群是高可用的,设置了两个Master,所以在conf/spark-env.sh配置文件中就不能指定Master节点的Ip了,所以这里肯定是IP和主机的映射关系错了。
下面是我Master节点中/etc/hosts文件的内容:
下面是我Worker节点/etc/hosts文件的内容:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.67.136 L3
- 1
- 2
- 3
- 4
这样一来,当我启动spark集群时,Master节点启动用的地址是192.168.67.134:7077,
由于Worker节点没有添加映射关系,他会以为Master节点用的地址是127.0.0.1:7077,所以会出现连接不上的问题。
找到了问题所在,我把Worker节点上的/etc/hosts文件的内容也改成了:
然后再启动spark集群,打开UI界面后发现Worker节点出现了。
到此及结束了,如果有什么错误的话,欢迎各位大神留言指正。