Bigtable

Google Cloud Platform提供了 Google Bigtable 数据库的托管,HBase 和许多 NoSQL 存储系统的原始灵感。由于 HBase 与 Bigtable 非常相似,因此使用 Google 后端运行 OpenTSDB 2.3 和更高版本非常简单。实际上,架构(请参阅HBase Schema)完全相同,因此您要做的就是创建 Bigtable 实例,使用 Bigtable HBase Shell 创建 TSDB 表,并启动 TSD。

Note

Bigtable 的 Client 处于测试阶段,并且正在进行许多更改。随着我们调整代码并发现新的调整参数,性能应会提高。请通过邮件列表或通过修改 GitHub 中的代码来帮助我们。

Setup

  • 设置您的 Google Cloud Platform 帐户。

  • 请遵循创建云大表集群中的步骤。

  • 请遵循HBase Shell 快速入门中的步骤,注意下载 JSON 密钥文件的位置。

  • 将 HBASE_HOME 环境变量设置到您的 Bigtable Shell 目录中,确保已根据“创建 Cloud BigTable 群集”文档中的值设置了 HBASE_CLASSPATH,JAVA_HOME 和 GOOGLE_APPLICATION_CREDENTIALS 环境变量,然后运行 src/create_table.sh 脚本。如果脚本无法启动 Shell,请尝试手动运行 Shell 并执行 create 语句替换正确的值。

  • 通过执行 sh build-bigtable.sh 来构建 TSDB(或者,如果您更喜欢 Maven,则执行 sh build-bigtable.sh pom.xml)。

  • 使用下面的必需和/或可选配置参数准备 opentsdb.conf 文件。

  • 通过 build/tsdb tsd --config =<path> /opentsdb.conf 运行 TSD

Configuration

下表是使用 Bigtable 运行 OpenTSDB 的必需和可选参数的表。这些是来自Configuration的标准 TSD 配置参数的补充。

PropertyTypeRequiredDescriptionDefault
google.bigtable.project.idStringRequired托管 Bigtable 集群的项目 ID。
google.bigtable.instance.idStringRequired创建时分配给 Bigtable 集群的集群 ID。请注意,在 AsyncBigtable 0.3.0 之前,该值为google.bigtable.cluster.name
google.bigtable.zone.idStringRequired您的 Bigtable 集群运行所在的区域;在创建时选择。请注意,在 AsyncBigtable 0.3.0 之前,该值为google.bigtable.zone.name
hbase.client.connection.implStringRequired将用于实现 HBase API AsyncBigtable 的类将用作 BigtableClient 端和 OpenTSDB 之间的填充程序。将此设置为com.google.cloud.bigtable.hbase1_2.BigtableConnection(或 AsyncBigtable 0.3.0 com.google.cloud.bigtable.hbase1_0.BigtableConnection之前)。
google.bigtable.auth.service.account.enableBooleanRequired是否使用 Google 云服务帐户进行连接。设置为 truefalse
google.bigtable.auth.json.keyfileStringRequired与您要用于 Bigtable 访问的服务帐户相关联的 JSON 格式的密钥文件的完整路径。从您的云控制台下载此文件。
google.bigtable.grpc.channel.countIntegerOptional向 Bigtable API 打开的用于处理 RPC 的套接字数。为了获得更高的吞吐量,请考虑增加通道数。4

Note

在较旧版本的 Client 端中,Google 的 BigtableClient 端使用 ALPN 通过 TLS 通过 HTTP2 与服务器通信。由于 Java 7 和 8(大约 9)不支持本机 ALPN,因此必须在 JVM 开始时加载library来修改 JVM 的字节码。 OpenTSDB 的构建脚本将尝试检测您的 JDK 版本并下载正确版本的 ALPN,但是如果您具有自定义 JVM 或 Hotspot 或 OpenJDK 之外的其他内容,则可能会遇到问题。尝试使用不同版本的 alpn-boot JAR,以了解适合您的方法。对于 AsyncBigtable 0.3.0,使用了 JDK 不可知库,因此不再需要 ALPN。