解决Call to localhost/127.0.0.1:16000 failed on connection exception的异常

在运行hbase集群的时候一直显示Master initiating..查看regionserver的日志报异常

2019-12-18 22:34:34,966 WARN  [regionserver//127.0.0.1:16020] regionserver.HRegionServer: reportForDuty failed; sleeping and then retrying.
2019-12-18 22:34:37,967 INFO  [regionserver//127.0.0.1:16020] regionserver.HRegionServer: reportForDuty to master=localhost,16000,1576679615669 with port=16020, startcode=1576679617527
2019-12-18 22:34:37,967 WARN  [regionserver//127.0.0.1:16020] regionserver.HRegionServer: error telling master we are up
com.google.protobuf.ServiceException: java.net.ConnectException: Call to localhost/127.0.0.1:16000 failed on connection exception: java.net.ConnectException: Connection refused

在hosts文件中明明配置了master的内网ip,可这里日志却打印的是matser=127.0.0.1

问题就出在master的主机名并不等于master(由于我用的是云主机,所以主机名是VMxxx)

出现原因:就在于zk的协调上,当master主机向zk注册的时候,是以自身主机名来进行注册的,即master这个节点绑定的是VMxxx这个主机名,而我的Regionserver通过zk来获取master的hostname的时候,获取的是VMxxx而不是master,虽然regionserver的hosts文件中配置了master到ip的映射,在hbase-site.xml中配置了hbase.master.info.bindAddress选项为master都没用的,因为读取master根本不走配置文件二是走zk,然后在根据zk返回的结果取查询hosts中的映射。

解决方案:将所有集群中的主机名保持跟hosts文件的ip映射名一致

同理:所有涉及zk做协调服务的集群都涉及这个问题,都需要保证集群中的主机名保持跟hosts文件的ip映射名一致

你可能感兴趣的:(大数据,hbase,zookeeper)