HBase和Hive是否需要共存于同一台机器上?

时间:2017-02-28 08:20:12

标签: hadoop hive hbase

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

hbase architecture

现在我想添加一个新的配置单元群集。但我不知道是否应该在hbase上使用同一个hadoop集群构建配置单元。或者我应该为hive构建一个新的hadoop集群吗?

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

1 个答案:

答案 0 :(得分:3)

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

  • 使用Hive直接查询HBase
  • 使用Hive执行带有HBase表的仓库表的加入请求
  • 使用Hive执行具有HBase表的外部表的Join请求

如果您深入了解所有这些组件的架构,您会发现Hive Warehouse和Hbase都在场景后面使用HDFS。同样可以考虑位于HDFS中的外部表。因此,如果将Hive部署到当前架构中,那么内部数据将物理存储在与HBase相同的位置 - 在数据机架的DataNode中。这意味着您的流量对于YARN将通过您的Hive查询安排的任务来说是最佳的。如果您为hive Warehouse创建另一个Rack,其中包含位于另一个数据中心的一组单独的DataNode,则会对您的性能产​​生负面影响。

因此,如果您有足够的容量将数据保存在单个机架中以用于所有服务,请采用这种方式。您可以在参考链接中详细了解HiveHBase基础架构。