分享

JavaApi操作Hbase慢的问题

北冥有鱼 发表于 2016-8-1 23:16:57 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 16598
本帖最后由 北冥有鱼 于 2016-8-1 23:28 编辑

我用java api操作hbase,测试的时候,3台机器,一台master,二台regionServer,自己搭的的zookeeper,建个表都是3秒多,,,,为什么这么慢呢.... 在很少的数据里面通过rowkey查询数据,也要好几秒..我用的1.2.1版本,论坛上的关于hbase优化的帖子我也看了,但是感觉我这问题不是优化的问题...不至于建个表都要好几秒啊...谁能帮帮我.......实在想不通啊  我看网上说从上千万数据中通过rowkey查询都是毫秒级 我好纠结  机器内存也都够的


       @Test
        public void createTableTest(){
                long start = System.currentTimeMillis();
               
                Configuration conf = HBaseConfiguration.create();

                Admin admin = null;
                Connection connection = null;
                try {
                        connection = ConnectionFactory.createConnection(conf);
                        admin = connection.getAdmin();
                        TableName name = TableName.valueOf("test");
                        
                        HTableDescriptor tableDesc = new HTableDescriptor(name);
                        HColumnDescriptor family = new HColumnDescriptor("base_info");
                        family.setCompressionType(Compression.Algorithm.SNAPPY);
                        family.setMaxVersions(1);
                        family.setBloomFilterType(BloomType.ROW);
                        tableDesc.addFamily(family);
                        
                        admin.createTable(tableDesc);
                        
                } catch (IOException e) {
                        e.printStackTrace();
                }finally{
                                try {
                                        if(null != admin) admin.close();
                                        if(null != connection) connection.close();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                }
               
                long end = System.currentTimeMillis();
                long cost = end -start;
                System.out.println("cost: " + cost);
        }
直接在hbase shell 中 scan一条数据,速度还行 : 1 row(s) in 0.0360 seconds
但是java api操作,通过rowkey scan同样的数据,都要2秒多3秒, 这是为什么 ...

已有(3)人评论

跳转到指定楼层
qcbb001 发表于 2016-8-2 06:06:32
说下自己的配置,还有jvm的配置。
hbase查询一般都有结合其它的技术。比如hbase使用二级索引,hbase+solr等等这样会更快
回复

使用道具 举报

355815741 发表于 2016-8-2 09:01:39
Connection需要长连接,你连续查询两次,第二次跟第一次的rowkey要不一样,看下耗时,第二次时间会在毫秒级。
回复

使用道具 举报

北冥有鱼 发表于 2016-8-2 21:11:44
感谢二位回复,让新手的我受益匪浅,还需继续努力,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条