HBase调优案例(一)——建表长时间等待最后失败
2024-08-27 21:59:58
现象:
1.在HBase Shell里执行建表操作会等很久,最终失败;
2.通过代码侧进行建表同样不能成功。
原因排查:
1.查询HMaster日志,发现有接收到建表(create)的RPC请求;
在zookeeper的/hbase/table和/hbase/table-lock路径下也都能看到此table;
/hbase/table-lock/testXXXX路径下存在write**文件,表明获取table锁的过程没有问题;
2.从代码侧观察,发现建表操作的CreateTableHandler线程开始运行的话,没有info打印。说明此线程未运行。
代码样例:
public void process(){
TableName tableName = this.hTableDescriptor.getTableName();
Log.info("—————开始建表———————");
}
3.查看jstack,有DisableTable Handler一直处于sleep状态
原因:
由于HMaster上进行table-operations(create/disable)都是用的同一个线程池,并且线程池的大小为1,所以确认是DisableHandler线程一直未结束导致无法进行建表。
总结:
类似问题可以通过jstack查看具体是哪个线程运行导致当前建表操作提交了但是不能分配线程运行。
当前HBase版本处理DDL操作的线程池最大线程数都是1,所以一个操作进行时,其他操作都需要等待。建议以后版本开放此线程池的配置项,能够并发处理操作。
最新文章
- zookeeper集群搭建
- Theano:LSTM源码解析
- ReportViewer改变图表类型
- [转载]再谈iframe自适应高度
- selenium IDE &; Remote Control &; Webdriver
- ADO.Net 之 数据库连接池(一)
- 手写总结:synchronized 和 lock 区别
- Android反编译APK
- how to write a struct to a file directly?
- 字符串匹配之KMP,C++实现
- cas-单点登录-应用说明
- 深入理解java虚拟机_前言
- vue-cli脚手架(框架)
- C#中回滚TransactionScope的使用方法和原理
- (转)面试必备技能:JDK动态代理给Spring事务埋下的坑!
- devexpress之barManager 使用
- ClickHouse 简单试用
- Sampling and Estimation
- 14.Git忽略特殊文件.gitignore
- Codeforces 959 F. Mahmoud and Ehab and yet another xor task