spark集群中的worker总是连接不到master, zookeeper集群实现master高可用?

1,spark0-2 三台主机是zookeeper集群

2,spark0-4五台主机是 spark集群

3 spark0-1 两台主机实现master高可用。

在spark0上运行start-all.sh启动spark集群,这个时候会在本机启动spark 作为master,启动slaves文件中的 spark2 spark3 spark4主机作为slave。

clipboard.png

这个时候就出现了一个问题:
spark0 上运行start-all。sh 发现slave主机没有启动成功,仅spark0上的master启动成功了。

查看spark0上的日志发现 spark0在通过ssh 启动slave的时候 slave主机上的spark启动,然后尝试连接master,却将自己作为master。

比如说spark0 通过ssh 启动spark2上的spark,spark2上的 spark启动了作为worker,此时启动之后这个worker 尝试连接master,日志显示spark2上的worker spark 将自己localhost 作为master,正常情况下他应该询问zookeeper 集群 spark master是哪个,为什么这个地方却将localhost 作为master?

各位我的意思可以理解吗?

补充内容:
(1)spark集群配置连接zookeeper集群

clipboard.png

--------------------------------------------------------再述问题---------------------------

再述问题:

(1)spark0 作为master ,spark1 作为备用master

(2)slave中配置了spark2-4 作为worker节点

(3)在spark0上运行start-all.sh ,此时首先本地启动spark0上的 spark作为master,然后通过ssh 启动slaves 中的 spark2,spark3 spark4作为worker

(4)spark2上的 spark启动之后 需要和master通信确认 ,此时我查看了spark2上的日志发现,spark2上的spark 找不到master, 日志显示将localhost 作为了mater,就如上图中的 红色箭头显示一样

(5)spark0 一直收不到spark2-spark4 work节点的确认启动成功信息,所以worker启动失败。

问题: 为什么spark2 spark3 spark4 这三个节点找不到master?将localhost作为了master ? 正常情况下应该是 spark2 spark3 spark4 启动之后 应该询问zookeeper集群 哪个接地啊是master, 因为我们在saprk2 spark3 spark4中的 spark-env.sh 文件中配置了 连接zookeeper集群参数

阅读 7.2k
2 个回答

不是有一个slaves文件吗?那里面应该配置worker地址的.哪一台机器是slaves,把主机地址写里面了吗?

兄弟 问题解决了么,我特意注册了账号来回复。。
我也遇到了一样的问题,
开始以为是hosts文件配置错了,后来又找zookeeper配置的原因,结果都没有结果
耗费了半天时间
后来在stackoverflow上找到了解决方法:
在spark-env.sh中配置:
export SPARK_MASTER_HOST=your master ip
export SPARK_LOCAL_IP=your local ip

因为据说在spark2.0之后,SPARK_MASTER_IP这个参数没有了,变成了SPARK_MASTER_HOST
我之前一直用的SPARK_MASTER_IP,在其他的服务器上没有问题,但是在生产环境出现了问题。
虽然疑惑还是有的,但是至少问题解决了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进