Hadoop Map/Reduce 来自我自己的 Hadoop 集群的 Cloud Bigtable 作业

Hadoop Map/Reduce Job with Cloud Bigtable From my own Hadoop Cluster

在本文Example: Hadoop Map/Reduce Job with Cloud Bigtable中,它在Google云中创建一个Hadoop集群并连接到云bigtable集群。

即使在这篇文章中,它也使用了一个Connection 对象来与BigTable 集群通信。这是否意味着 Google 推荐我们使用其定制的 HBase 客户端 API 来访问 Cloud BigTable 上的数据?

是否可以从我自己的Hadoop集群连接到云bigtable集群?我的 Hadoop 集群在 AWS 而不是 Google 云中。

目前 Java 的最佳客户端,尤其是 Hadoop MapReduce,是通过 HBase API,是的。也就是说,客户端以标准 HBase 1.0+ 连接、Table 和管理界面为目标。

要从 AWS 连接,您可以使用 Connecting to Cloud Bigtable and set extra configuration values to specify how to authenticate to Cloud Bigtable. At a minimum, you'll want to specify the email address of a service account (google.bigtable.auth.service.account.email) and the location of a p12 file for that service account (google.bigtable.auth.service.account.keyfile) defined in the BigtableOptionsFactory 中的步骤。 p12 密钥文件和 bigtable-hbase JAR 将需要与作业一起分发(或之前部署到集群)。将其他作业部署到集群的工作流程将影响这些额外依赖项的部署方式。

至于部署,如果您使用的是 maven(或 ivy 等),则可以通过组 com.google.cloud.bigtable 在 maven central 上找到 bigtable-hbase jar。 HBase 1.0 和 1.1 都有工件。如果您使用的是 maven-assembly 或 maven-shade 插件,您可以将所需的工件与您的作业捆绑在一起。

另请注意,当 运行 在 GCP / GCE 之外时,进出 Cloud Bigtable 的延迟会因额外的网络跃点而增加。