当为每个项目请求put时,HBase吞吐量非常小
我正在使用Java客户端测试hbase中put请求的吞吐量 我找到了两种方法,Table.putPut/Table.putList,并对它们进行了简单的测试 他们之间有着巨大的差异 当我对单个项目发出put请求时,吞吐量大约为200~300 但当我第一次将其添加到列表中并批量发送时,吞吐量超过20000 我只使用了一个线程来测试度量本身,但我想知道的是,当HBase可以处理远不止这些的时候,为什么每个项目的put请求都非常慢 根据我们的系统需求,对单个项目发出put请求似乎更合适。但很明显,我们每秒钟拥有的物品比几百件还要多 对此有什么建议吗?下面是我用于测试的代码片段:当为每个项目请求put时,HBase吞吐量非常小,hbase,Hbase,我正在使用Java客户端测试hbase中put请求的吞吐量 我找到了两种方法,Table.putPut/Table.putList,并对它们进行了简单的测试 他们之间有着巨大的差异 当我对单个项目发出put请求时,吞吐量大约为200~300 但当我第一次将其添加到列表中并批量发送时,吞吐量超过20000 我只使用了一个线程来测试度量本身,但我想知道的是,当HBase可以处理远不止这些的时候,为什么每个项目的put请求都非常慢 根据我们的系统需求,对单个项目发出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();
}
}