HBase 和 Hive 需要放在同一台机器上吗?

Does HBase and Hive need to be co-located on the same machine?

我们目前正在构建一个新的hbase 集群。架构如下:

现在我想添加一个新的 Hive 集群。但是不知道要不要和hbase在同一个hadoop集群上搭建hive。或者我应该为 hive 构建一个新的 hadoop 集群?

如果我为hive搭建一个新的hadoop集群,执行SQL聚合hbase的数据时,hive和hbase之间的流量会不会太大(AFAIK,hive需要将hbase上的数据导入到它自己的 hdfs 存储)?

我们先来定义HBase和Hive之间的流量是多少。在每个 Hive 查询中,您将:

  • 使用Hive直接查询HBase
  • 使用 Hive 执行仓库 tables 与 HBase 的加入请求 table
  • 使用 Hive 执行外部 table 与 HBase 的加入请求 table

如果深入研究所有这些组件的架构,您会注意到 Hive Warehouse 和 Hbase 都在幕后使用 HDFS。同样可以考虑位于 HDFS 中的外部 tables。因此,如果将 Hive 部署到当前架构中,内部数据将物理上存储在与 HBase 相同的位置 - 在数据机架的 DataNode 中。这意味着您的流量将最适合 YARN 通过 Hive 查询安排的任务。如果您使用位于另一个数据中心的一组单独的数据节点为配置单元仓库创建另一个机架,这会对您的性能产​​生负面影响。

因此,如果您有足够的能力将所有服务的数据保存在单个机架中,请采用这种方式。您可以在参考链接中阅读有关 Hive and HBase 基础设施的更多信息。