如何在Hbase中解决ThrottlingException

时间:2016-08-25 16:16:36

标签: mapreduce hbase throttling

我正在使用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读取速度慢?或者告诉它等待并重试?

2 个答案:

答案 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);
    }
}