我正在使用map-reduce作业来读取hbase,我不时收到
Error: org.apache.hadoop.hbase.quotas.ThrottlingException:
org.apache.hadoop.hbase.quotas.ThrottlingException:
request size limit exceeded - wait 0.00sec at
由于整个地图减少了作业被杀,有没有办法告诉hbase读取速度慢?或者告诉它等待并重试?
答案 0 :(得分:0)
将hbase.client.pause和hbase.client.retries.number设置为更高的值可能会有所帮助。
答案 1 :(得分:0)
可以通过覆盖Mapper.run方法来处理异常,我还没有找到任何推荐此解决方案的文档。它对我有用。
@Override
public void run(Context context) throws IOException, InterruptedException {
setup(context);
try {
while (true) {
boolean wasResult;
int retry_number=0;
while (true) {
try {
wasResult = context.nextKeyValue();
break;
} catch (ThrottlingException te) {
retry_number+=1;
Thread.sleep(1000+200*retry_number);
}
}
if (!wasResult) break;
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
} finally {
cleanup(context);
}
}