我们已经设置了5个节点的Bigtable群集,并且GCP控制台声明它应该支持5K QPS @ 6ms的读取和写入操作。实现声明的Cloud Bigtable写入QPS
我们正在尝试加载一个大型数据集(约800M记录),其中包含大约50个包含大部分数字数据的字段以及一些简短的字符串。密钥是11位数字字符串。
当通过HBCE API从GCE中的单个客户端虚拟机加载此数据集时,我们将每个字段放入单独的列时可以观察到高达4K QPS。我们使用单个HBase连接,并使用多个线程(5-30)批量处理10K记录。
将所有字段组合到单列(Avro编码,每个记录约250字节)时,批量投入的写入性能提高到10K QPS。并发线程数似乎不会影响QPS。当每个线程使用单独的HBase连接时,5个线程的写入性能会提高到20K QPS。
客户端VM与Bigtable集群处于相同的可用区域,并且在加载过程中它几乎保持空闲状态,因此它看起来不像客户端的瓶颈。
问题:
- 从我们的测试中,它似乎是写QPS与插入的列的数目减少。这是否是预期的,这种关系如何量化? (顺便说一下,如果这在Bigtable performance documentation中提到过会很好)。
- 为了达到声明的写入QPS,我们可能会丢失什么?我的理解是,每个集群节点应该支持10K写入QPS,但看起来我们只针对具有单个HBase连接的单个节点,并且仅针对具有多个HBase连接的2个节点。
谢谢Les!看起来github回购是私人的。这个测试可以在公开回购中发布吗? –
我会试着用0.2.3版本来完成 - 对不起。 –