最近对HBASE做了YCSB的测试,数据load后,然后run以后会得到如下结果:

发现会有很多READ_FAILED,看图可以发现READ_FAILED本质上就是Return=NOT_FOUND。
研究了一下READ的源码(YCSB/HBaseClient10.java at 0.17.0 · brianfrankcooper/YCSB · GitHub)

可以发现当r.isEmpty()时返回为NOT_FOUND。由此我们可以得知执行是成功了,但是返回为空。
猜想是key值不存在,那就要看一下load的时候key的生成和run的时候key的获取。
YCSB/CoreWorkload.java at 0.17.0 · brianfrankcooper/YCSB · GitHub

对于不同requestdistribution,生成的key是不一样的,workload中requestdistribution=zipfian,可以看到代码如上。
发现zipfian的生成主要和insertproportion operationcount recordcount insertcount insertstart有关。
排查load和run的时候recordcount不一致导致READ-FAILED的问题。重新跑了一遍就可以了。

本文针对HBase使用YCSB测试时出现的READ_FAILED问题进行深入分析,发现该问题是由于load阶段与run阶段recordcount不一致导致。通过调整Zipfian分布参数,确保两阶段记录数量一致,最终解决了READ_FAILED问题。
1027

被折叠的 条评论
为什么被折叠?



