要么我运行扫描命令或计数,这个错误弹出,错误消息没有意义了我。它说什么和怎么解决呢?
org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException:预期nextCallSeq:1但nextCallSeq从客户端得到:0;请求= scanner_id:788个NUMBER_OF_ROWS:100 close_scanner:假next_call_seq:0
命令:
计数 '表',5000扫描 '表',{COLUMN => [ 'CF:CQ'],FILTER => “ValueFilter(= 'binaryprefix:someValue中')”}
编辑:
我已经添加在HBase的-site.xml中的以下设置
<property>
<name>hbase.rpc.timeout</name>
<value>1200000</value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value>100</value>
</property>
没有影响
EDIT2:增加睡眠
Result[] results = scanner.next(100);
for (int i = 0; i < results.length; i++) {
result = results[i];
try {
...
count++;
...
Thread.sleep(10); // ADDED SLEEP
} catch (Throwable exception) {
System.out.println(exception.getMessage());
System.out.println("sleeping");
}
}
EDIT2后新的错误:
org.apache.hadoop.hbase.client.ScannerTimeoutException: 101761ms passed since the last invocation, timeout is currently set to 60000
...
Caused by: org.apache.hadoop.hbase.UnknownScannerException: org.apache.hadoop.hbase.UnknownScannerException: Name: 31, already closed?
...
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 31, already closed?
...
FINALLY BLOCK: 9900
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hbase.client.ScannerTimeoutException: 101766ms passed since the last invocation, timeout is currently set to 60000
...
Caused by: org.apache.hadoop.hbase.client.ScannerTimeoutException: 101766ms passed since the last invocation, timeout is currently set to 60000
...
Caused by: org.apache.hadoop.hbase.UnknownScannerException: org.apache.hadoop.hbase.UnknownScannerException: Name: 31, already closed?
...
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 31, already closed?
...
编辑:通过使用随下载的HBase的(未Maven的0.99)相同的客户端版本,我能解决这个问题。服务器版本0.98.6.1包含./lib文件夹内的客户端罐子
不要忘记附上饲养员库
旧:
现在,我做了两两件事,改变了表连接API(0.99)
Configuration conf = HBaseConfiguration.create();
TableName name = TableName.valueOf("TABLENAME");
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(name);
然后,当错误弹出,我尝试重新连接
scanner.close();
conn.close();
conf.clear();
conf = HBaseConfiguration.create();
conn = ConnectionFactory.createConnection(conf);
table = conn.getTable(name);
table = ConnectionFactory.createConnection(conf).getTable(name);
scanner = table.getScanner(scan);
这工作,但它是在收到第一个错误后可能会放缓。很慢,通过所有的行扫描
这有时会发生,当你做了巨大的删除,您需要合并空白区域,要平衡你的地区
可以通过破盘以及造成的。在我来说,它不是那么坏,这样Ambari,HDFS或我们的监测服务注意到了这一点,但足以破坏,使得它不能成为一个区域。
使用磁盘停止RegionServer的后,扫描工作。
我发现RegionServer的运行在调试模式HBase的外壳:
hbase shell -d
然后一些regionservers出现在输出,其中一人站了出来。然后,我跑到dmesg
主机上找到发生故障的磁盘。