Hbase错误总结:Hbase连接不上Zookeeper

错误信息:

Could not start ZK at requested port of 2181. ZK was started at port: 2182. Aborting as clients (e.g. shell) will not be able to find this ZK quorum

2018-10-24 17:41:57,609 INFO  [Thread-2] server.NIOServerCnxn: Closed socket connection for client /127.0.0.1:57410 (no session established for client)
2018-10-24 17:41:57,610 INFO  [main] zookeeper.MiniZooKeeperCluster: Started MiniZooKeeperCluster and ran successful 'stat' on client port=2182
2018-10-24 17:41:57,611 ERROR [main] master.HMasterCommandLine: Master exiting
java.io.IOException: Could not start ZK at requested port of 2181.  ZK was started at port: 2182.  Aborting as clients (e.g. shell) will not be able to find this ZK quorum.
	at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:212)
	at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:137)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
	at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2522)

错误截图 :

 

 

解决方法: 

1).hbase-env.sh 将 export HBASE_MANAGES_ZK 属性设置为false 

export HBASE_MANAGES_ZK=false

以下也可以导致这个问题:

1、netstat -antp | fgrep 2181,就知道端口被什么进程占了

2、已经启动ZK,但是HBase并没有使用外部的ZK,导致冲突

2).hbase-site.xml 将 hbase.cluster.distributed 设置为true

<property>
<name>hbase.cluster.distributed</name> 
<value>true</value>
</property>

再次启动没错了

 

推荐博客:

 1、Hbase架构及工作原理、数据及物理模型、Hbase优化

 2、Hbase常用优化、Hbae性能优化、Hbase优化经验总结

 3、Hbase错误总结:Hbase未正常关闭启动报错

4、Hbase错误总结:Hbase连接不上Zookeeper

5、大数据入门教程系列之Hbase安装(伪分布式)

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: HBase作为一个分布式系统,需要ZooKeeper来进行集群的协调和管理。在HBase中,ZooKeeper Session是指客户端与ZooKeeper服务器之间的逻辑连接,如果客户端与ZooKeeper服务器的Session失效,客户端需要重新连接ZooKeeper服务器。 HBaseZooKeeper Session重连机制分为两种情况: 1. 客户端与ZooKeeper服务器的连接断开,但是ZooKeeper服务器仍然存在,这种情况下客户端会尝试重新连接ZooKeeper服务器,并恢复之前的Session。 2. ZooKeeper服务器不可用,这种情况下客户端会不断地重试连接,直到ZooKeeper服务器可用。当ZooKeeper服务器重新启动并且客户端重新连接成功后,客户端会创建一个新的Session。 ### 回答2: HBase是一个分布式数据库,它使用ZooKeeper来协调和管理其集群中的各个节点。在HBase中,当与ZooKeeper建立连接时,会创建一个会话(session),该会话会定期向ZooKeeper发送心跳以保持连接。 然而,由于各种原因,会话可能会中断,例如网络故障、ZooKeeper集群重新启动或者部分节点宕机等。在这种情况下,HBase会采取重连机制来重新建立与ZooKeeper连接。 具体而言,HBase的重连机制如下: 1. 首先,HBase会在会话断开之后尝试与ZooKeeper重新建立连接,它会使用预先配置的ZooKeeper集群地址来查找并连接可用的ZooKeeper节点。 2. HBase会等待一段时间,并定期尝试连接ZooKeeper。默认情况下,它会每隔10秒尝试一次,直到连接成功或超过最大尝试次数。 3. 一旦HBase重新建立了与ZooKeeper连接,它将恢复之前断开的会话。这意味着HBase将能够继续向ZooKeeper发送心跳以保持连接,并且能够接收和处理由ZooKeeper发送的事件通知。 4. 如果HBase尝试连接的次数超过了最大尝试次数,并且仍然无法建立连接,则表示重连失败。这时HBase会进行相应的错误处理,例如记录错误日志、抛出异常或进行其他操作。 综上所述,HBase的重连机制通过周期性地尝试连接ZooKeeper来保证与ZooKeeper连接稳定性。这确保了HBase能够持续地与ZooKeeper进行通信,从而有效地管理和协调整个HBase集群的操作。 ### 回答3: HBase使用Zookeeper来进行协调和管理分布式集群的配置信息和状态信息。Zookeeper作为一个可靠的分布式协调服务,可以保证数据的一致性和可用性。 在HBase中,当ZookeeperHBase Master建立连接时会创建一个会话(session),用于维护两者之间的通信。会话通常具有超时时间,一旦超过这个时间,Zookeeper会认为会话已失效并将其关闭。 当HBase Zookeeper会话丢失或超时后,会触发HBaseZooKeeperWatcher机制进行重连。ZooKeeperWatcher是HBase中一个用于监视Zookeeper状态变化的线程。重连过程包括以下几个步骤: 1. ZooKeeperWatcher会尝试重新建立与Zookeeper连接。它会检查是否存在已建立的连接,如果存在则会关闭旧连接。 2. 如果与Zookeeper连接建立成功,则重新初始化HBase集群的状态。这包括重新注册HBase Master和RegionServer节点以及恢复已分配的Region。 3. 如果与Zookeeper连接建立失败,则会进行重试。重试机制通常是指定一定的时间间隔后再次尝试连接,直到连接成功或超过最大重试次数。 需要注意的是,在HBase中,Zookeeper会话的重连过程是透明的,对HBase用户来说是无感知的。用户只需要确保在配置文件中正确指定Zookeeper集群地址,而不需要关心具体的重连机制。 总之,HBaseZookeeper会话重连机制确保了与Zookeeper连接的可靠性和一致性,使得HBase集群在网络异常或Zookeeper故障的情况下能够自动恢复正常的运行状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值