项目中hbase接口开发总结

来源:互联网 发布:帝国cms首页模板代码 编辑:程序博客网 时间:2024/06/14 04:34

                                                                            项目中查询hbase接口开发总结

   最近在做关于查询hbase应用层接口的性能测试。从而有一个对于hbase查询的效率有了新的认识。

1、查询的rowkey设计和写入数据的rowkey设计要区分。

   rowkey通常的设计规则是:

   1、较短 2、唯一 3、散列 4、通常将需要查询的数据参与rowkey的设计

   项目场景:

   在一个查询请求过来时,在业务会查询两个表共有4次查库的动作。这样使得应用的TPS较低。解决的方式是修改查询时的rowkey的设计规则,为了减少查库的次数减少,TPS得到了提升。


2、关于scan的使用,scan的next方法默认是每次只取出一条数据,可以通过设置scan.setCaching()来增加每次取出的条数。我们结合自己的实际开发需要将其改成5,查询的性能也有所提升。


3.本次接口中封装的是单例的HConnection,这样使得在高并发的情况下性能也是有所降低,我们尝试封装出连接池。而且打印出来了每个模块的时间的消耗,使得时间每部分花费的时间直观体现了这部分的时间耗费比较长。在实际项目中发现每次调用HManager.createConnection()会导致项目中的内存溢出,服务器无法再次创建线程。


4.对于查主备库查询方案的优化。

查询的方案是选择一个库作为主要查询的库,主库A。先使用启动一个子线程去查询库,当发现在一定时间后没有返回值的情况下就再启动一个子线程去查库B,等待二者查询结果,谁先返回就取出查询结果,杀掉两个查询的子线程,并统计查询库的情况,即当前查询的A库连续三次出现在一定时间内没有返回值,那么就将B库中作为主要查询的库。

0 0
原创粉丝点击