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