1.å¦ä½è§£å³ hbase regiontoobusyexception
å¦ä½è§£å³ hbase regiontoobusyexception
Hbaseæ«ææ¶æåºScannerTimeoutExceptionå¤ç
å¨å¯¹Hbaseè¿è¡Scançæ¶åææ¶åä¼æåºScannerTimeoutExceptionï¼åºæ¯å¦ä¸ï¼
:: (mins,类源花旗 源码 sec)
org.apache.hadoop.hbase.client.ScannerTimeoutException: ms passed since the last invocation, timeout is currently set to
at org.apache.hadoop.hbase.client.HTable$ClientScanner.next(HTable.java:)
at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue(TableRecordReaderImpl.java:)
at org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue(TableRecordReader.java:)
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:)
at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:)
at org.apache.hadoop.mapred.Child$4.run(Child.java:)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:)
at org.apache.hadoop.mapred.Child.main(Child.java:)
åå æ¥çæ¥éª¤ï¼
æ¥æ¾æºç å¦ä¸ï¼
long timeout = lastNext + scannerTimeout;
// If we are over the timeout, throw this exception to the client
// Else, it's because the region moved and we used the old id
// against the new region server; reset the scanner.
if (timeout < System.currentTimeMillis()) {
long elapsed = System.currentTimeMillis() - lastNext;
ScannerTimeoutException ex = new ScannerTimeoutException(
elapsed + "ms passed since the last invocation, " +
"timeout is currently set to " + scannerTimeout);
ex.initCause(e);
throw ex;
}
æ ¸å®ä¸å¦ä¸ä»£ç
long timeout = lastNext + scannerTimeout;
å¾åºï¼ClientScanner.lastNextåHTable.scannerTimeout
è·è¸ªï¼HTable.scannerTimeout
this.scannerTimeout =
(int) conf.getLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, HConstants.DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD);
æ¥çHConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEYåHConstants.DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD
æ们å¯ä»¥å¾ç¥å¦æ没æ设置HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEYé£ä¹ä»ä»¬éç¨é»è®¤å¼å³
public static long DEFAULT_HBASE_REGIONSERVER_LEASE_PERIOD = ;
è·è¸ªï¼ClientScanner.lastNextåç°æ¤ä¸ºä¸æ¬¡è®¿é®æ¶é´
解å³æ¹æ¡ï¼
å¯ä»¥éè¿è®¾ç½®HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY解å³
代ç å¦ä¸ï¼
config.setLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, );