我们已经设置了具有5个节点的Bigtable集群,GCP控制台声明它应该支持50K QPS @ 6ms进行读写。
我们正在尝试加载大型数据集(~800M记录),其中包含大约50个字段,其中包含大部分数字数据和一些短字符串。键是11位数字字符串。
当从GCE中的单个客户端VM通过HBase API加载此数据集时,我们在将每个字段放入单独的列时观察到高达4K QPS。我们使用单个HBase连接,多个线程(5-30)进行10K记录的批量放置。
当将所有字段组合成单个列(Avro编码,每个记录约250个字节)时,批量放置的写入性能提高到10K QPS。并发线程数似乎不会影响QPS。当每个线程使用单独的HBase连接时,写入性能会增加到5K线程的20K QPS。
客户端虚拟机与Bigtable集群位于同一可用区域,并且在负载期间几乎保持空闲状态,因此它看起来不像客户端的瓶颈。
问题:
答案 0 :(得分:1)
回答第二个问题:通过从批量HBase Puts切换到mutators,我们设法达到了50K以上的QPS。我们仍在使用多个HBase连接,单个连接似乎仅限于单节点吞吐量。
答案 1 :(得分:1)
BufferedMutator
在4台CPU机器上为小(1KB)突变提供22-23K QPS,在32 CPU机器上提供高达90K的QPS。 0.2.2给出10K-12K QPS。打开单个HBase连接以获得最佳性能。
注意 - 删除了有关OpenSSL的说明,因为它现在是默认
有关其他信息,请参阅https://github.com/GoogleCloudPlatform/cloud-bigtable-client。