hbase_使用中遇到的问题(ConnectionLossException)

时间:2021-05-16 18:21:01

1. ConnectionLossException

此异常为zookeeper的可恢复异常

可恢复的异常是指那些应用程序能够在同一个ZooKeeper会话中恢复的异常。一个可恢复的异常是通过KeeperException.ConnectionLossException来表示的,它意味着已经丢失了与ZooKeeper的连接。ZooKeeper会尝试重新连接,并且在大多数情况下重新连接会成功,并确保会话是完整的。

但是ZooKeeper不能判断与KeeperException.ConnectionLossException异常相关的操作是否成功执行。这种情况就是部分失败的一个例子。这时程序员有责任来解决这种不确定性,并且根据应用的情况来采取适当的操作。在这一点上,就需要对“幂等”(idempotent)操作和“非幂等”(Nonidempotent)操作进行区分。幂等操作是指那些一次或多次执行都会产生相同结果的操作,例如读请求或无条件执行的setData操作。对于幂等操作,只需要简单地进行重试即可。对于非幂等操作,就不能盲目地进行重试,因为它们多次执行的结果与一次执行是完全不同的。程序可以通过在znode的路径和它的数据中编码信息来检测是否非幂等操怍的更新已经完成。

 

2017-07-19 09:42:14,105 WARN  [main-EventThread] zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper, quorum=hykj-slave-4:2181,hykj-master-3:2181,hykj-slave-5:2181, exception=org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master

2017-07-19 09:42:14,105 INFO  [main-EventThread] util.RetryCounter: Sleeping 1000ms before retry #0...

 

此异常是以警告形式给出,暂时没有对此异常进行处理。