在为每个项目请求put时,HBase吞吐量非常小

时间:2015-05-11 09:44:51

标签: hbase

我正在使用Java客户端测试hbase中put请求的吞吐量。

我发现了两种方式,Table.put(Put) / Table.put(List<Put>)并对每种方式进行了简单的测试。

他们之间存在巨大差异。

当我对单件物品提出要求时,吞吐量大约在200~300左右。

但是当我第一次将其添加到列表中并批量发送时,吞吐量超过20,000。

我只是使用一个线程来测试公尺本身,但我想知道的是为什么请求每个项目的放置速度太快,因为HBase可以处理的远不止这些。

根据我们的系统要求,对单个项目进行put请求似乎是更合适的方法。但显然我们每秒钟的物品数量会超过数百件。

对此有什么建议吗?以下是我用于测试的代码段:

    Table table = conn.getTable(TableName.valueOf("test"));

    // put single
    for(int i=0;i<logCount;i++){
        Put put = new Put(Bytes.toBytes(UUID.randomUUID().toString()));
        put.addColumn(Bytes.toBytes("basic"), Bytes.toBytes("name"), Bytes.toBytes("none"));
        table.put(put);
    }

    // put list
    for(int i=0;i<logCount;i++){
        Put put = new Put(Bytes.toBytes(UUID.randomUUID().toString()));
        put.addColumn(Bytes.toBytes("basic"), Bytes.toBytes("name"), Bytes.toBytes("none"));
        puts.add(put);
        if(puts.size()>1000){
            table.put(puts);
            puts.clear();
        }
    }

0 个答案:

没有答案