如何解决hbase中的throttlingexception

mec1mxoz  于 2021-06-10  发布在  Hbase
关注(0)|答案(2)|浏览(720)

我使用map reduce job来读取hbase,不时收到

Error: org.apache.hadoop.hbase.quotas.ThrottlingException:
org.apache.hadoop.hbase.quotas.ThrottlingException: 
request size limit exceeded -         wait 0.00sec at

因为整个map reduce作业都被杀死了,有没有办法告诉hbase读得慢一点?还是让它等一下再试?

4dbbbstv

4dbbbstv1#

将hbase.client.pause和hbase.client.retries.number设置为更高的值可能会有所帮助。

cwdobuhd

cwdobuhd2#

这个异常可以通过重写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);
    }
}

相关问题