【问题标题】:Achieving declared Cloud Bigtable writes QPS实现声明的 Cloud Bigtable 写入 QPS
【发布时间】:2016-04-27 21:48:04
【问题描述】:

我们已经设置了 5 个节点的 Bigtable 集群,GCP 控制台声明它应该支持 50K QPS @ 6ms 的读写。

我们正在尝试加载一个包含约 50 个字段的大型数据集(约 8 亿条记录),其中主要包含数字数据和一些短字符串。键是 11 位数字字符串。

当通过 HBase API 从 GCE 中的单个客户端 VM 加载此数据集时,我们观察到在将每个字段放入单独的列时高达 4K QPS。我们使用单个 HBase 连接和多个线程 (5-30) 批量放置 10K 记录。

当将所有字段组合成一列(Avro 编码,每条记录约 250 字节)时,使用批量 put 的写入性能提高到 10K QPS。并发线程数似乎不会影响 QPS。当每个线程使用单独的 HBase 连接时,写入性能提高到 5 个线程的 20K QPS。

客户端 VM 与 Bigtable 集群位于同一可用区,并且在负载期间几乎保持空闲状态,因此看起来瓶颈不在客户端。

问题:

  1. 根据我们的测试,写入 QPS 似乎随着插入的列数而降低。这是预期的吗?如何量化这种关系? (顺便说一句,如果Bigtable performance documentation 中提到了这一点,那就太好了。
  2. 为了实现声明的写入 QPS,我们可能缺少什么?我的理解是每个集群节点都应该支持 10K 写入 QPS,但是我们似乎要针对具有单个 HBase 连接的单个节点,并且仅针对具有多个 HBase 连接的 2 个节点。

【问题讨论】:

    标签: google-cloud-bigtable


    【解决方案1】:

    BufferedMutator 在带有 OpenSSL 和 Java8 的 0.2.3-SNAPSHOT 中为 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 了解更多信息。

    【讨论】:

    • 谢谢莱斯!看起来 github repo 是私有的。这个测试可以在公共回购中发布吗?
    • 我会尝试在 0.2.3 版本中完成它——抱歉。
    【解决方案2】:

    回答第二个问题:通过从批处理 HBase Put 切换到 mutators,我们设法达到了超过 50K QPS。我们仍在使用多个 HBase 连接,单个连接似乎仅限于单节点吞吐量。

    【讨论】:

    猜你喜欢
    • 2015-10-16
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多