1

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

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

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

4

1 回答 1

2

现在最好的 Java 客户端,尤其是 Hadoop MapReduce,是通过 HBase API,是的。也就是说,客户端以标准 HBase 1.0+ Connection、Table 和 Admin 接口为目标。

要从 AWS 连接,您可以使用连接到 Cloud Bigtable中的步骤并设置额外的配置值来指定如何向 Cloud Bigtable 进行身份验证。至少,您需要指定服务帐户的电子邮件地址 (google.bigtable.auth.service.account.email) 和该服务帐户的 p12 文件的位置 (google.bigtable.auth.service. account.keyfile) 在 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 之间的延迟会因额外的网络跃点而增加。

于 2015-07-24T16:48:57.593 回答