我们在伪分析模式下使用hbase 1.2.4,使用java api来读取信息。我们的客户端为hbase提供了20k rps,但它只加载了30%的CPU,计算大约需要5个小时。我尝试拆分数据并在单独的jvm中在同一台机器上运行4个客户端,并且具有80k rps,计算时间约为1小时。这不是满足我的解决方案。分析显示许多连接线程被阻塞。 我也尝试使用hbase客户端的ipc池选项,但它没有太多改进性能。 如果有人有类似的问题,请给我一些建议。
答案 0 :(得分:0)
设置连接池的大小远远大于读取线程的数量。
Configuration conf;
...
String poolSize = "128";
conf.set(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);
conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "RoundRobin");
...
Connection conn = ConnectionFactory.createConnection(conf);
...