最近在研究hbase,查询效率确实不错,不过入库效率不理想,今天周五就小结以下。
hbase使用java 的api入库很简单:
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable();
Put p = new Put("表名");
p.add(("族列名").getBytes(), "字段名".getBytes(),"值".getBytes());
p.add...
table.put(p);
不过在最初的时候,录入一个8列的数据文件,入库的效率只有0.5MB/s,9716行/s。
后来做了若干改进,速度能达到0.8MB/s,1470行/s
具体如下:
1、修改hbase的BufferSize,并禁用hbase的自动提交功能
table.setWriteBufferSize(1024*1024*10);
table.setAutoFlush(false);
2、禁用hbase的预写日志功能(WAL)
p.setWriteToWAL(false); //p为已近add数据后的Put对象
这些在hbase的wiki上看到过,后面准备添加lzo压缩算法来进行优化,希望能有好的结果。wiki上还有些提高hbase集群性能的方法,例如:
修改regionserver的puts的handler数
将java调整为-server模式???
使用64位操作系统和64位JVM
取消swap
提升内存
提升CPU
hbase入库效率提升研究
最新推荐文章于 2024-04-07 15:42:44 发布