HBase中Lease创建、失效、及常见问题
HBase通过租约来控制每个scanner的操作时间。
1. 租约线程初始化:
HRegionServer的run方法会调用一次preRegistrationInitialization方法,再调用initializeThreads时,会new lease
poll方法会取出到期的lease并执行其Listener的过期方法。
过期方法中会将此scanner从内存中删除并将scanner关闭。
4. 常见错误
如果这个lease是存在的,自然可以正常删除,一量lease已经失效,则会抛LeaseException,
正常情况下,lease被remove之后,为了一个正常的next能继续运行下去,那么在最后会再增加一个lease,leasename还是原来的scanneridif (this.scanners.containsKey(scannerName)) { if (lease != null) this.leases.addLease(lease); }
针对以上错误
1.检查hbase.rpc.timeout(默认60000ms) 是否大于等于hbase.regionserver.lease.period(默认为60000ms), 大于等于才是对的。
2. 检查是否有scanner没有关闭。