Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop HBase和Hive是否需要位于同一台机器上?_Hadoop_Hive_Hbase - Fatal编程技术网

Hadoop HBase和Hive是否需要位于同一台机器上?

Hadoop HBase和Hive是否需要位于同一台机器上?,hadoop,hive,hbase,Hadoop,Hive,Hbase,我们目前正在构建一个新的hbase集群。架构如下所示: 现在我想添加一个新的配置单元集群。但我不知道是否应该在同一个hadoop集群上使用hbase构建hive。或者我应该为hive构建一个新的hadoop集群 如果我为hive构建一个新的hadoop集群,那么当我执行SQL来聚合hbase的数据时,hive和hbase之间的通信量是否会过大(好吧,hive需要将hbase上的数据导入自己的hdfs存储) 让我们首先定义HBase和Hive之间的通信量。在每个配置单元查询中,您将: 使用配置

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

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


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

让我们首先定义HBase和Hive之间的通信量。在每个配置单元查询中,您将:

  • 使用配置单元直接查询HBase
  • 使用配置单元执行仓库表与HBase表的联接请求
  • 使用配置单元执行外部表与HBase表的联接请求
如果深入研究所有这些组件的体系结构,您会发现Hive Warehouse和Hbase都在幕后使用HDFS。对于位于HDFS中的外部表也可以这样考虑。因此,如果您将配置单元部署到当前的体系结构中,那么内部数据将物理上存储在与HBase相同的位置—数据机架的DataNodes中。这意味着您的流量对于通过您的配置单元查询由纱线调度的任务来说是最佳的。如果为hive Warehouse创建另一个机架,并在另一个数据中心设置一组单独的数据节点,这将对性能产生负面影响


因此,如果您有足够的容量将所有服务的数据保存在单个机架中,那么就这样做。您可以在参考链接中阅读更多有关网络和基础设施的信息。

让我们首先定义HBase和Hive之间的通信量。在每个配置单元查询中,您将:

  • 使用配置单元直接查询HBase
  • 使用配置单元执行仓库表与HBase表的联接请求
  • 使用配置单元执行外部表与HBase表的联接请求
如果深入研究所有这些组件的体系结构,您会发现Hive Warehouse和Hbase都在幕后使用HDFS。对于位于HDFS中的外部表也可以这样考虑。因此,如果您将配置单元部署到当前的体系结构中,那么内部数据将物理上存储在与HBase相同的位置—数据机架的DataNodes中。这意味着您的流量对于通过您的配置单元查询由纱线调度的任务来说是最佳的。如果为hive Warehouse创建另一个机架,并在另一个数据中心设置一组单独的数据节点,这将对性能产生负面影响


因此,如果您有足够的容量将所有服务的数据保存在单个机架中,那么就这样做。您可以在参考链接中阅读更多关于基础设施和基础设施的信息。

Hi Alex。我已经看过文件了。我知道,如果在相同的数据节点上设置一个配置单元集群,并使用hbase,我可以将一个外部表映射到一个现有的hbase表。因此,如果我理解正确,hive不必为该hbase表存储数据副本,因为它可以直接读取它。现在的问题是,这是否会对hbase的性能产生巨大影响,因为SQL可能会扫描hbase表中的太多行,或者SQL执行是一项复杂的map reduce任务?@Alexis我们公司实际上就是这样使用它的。Hive将执行SQL查询到HBase扫描程序的转换器角色,因此从技术上讲,如果您直接通过HBase执行此步骤,或者允许Hive执行此步骤,则不会有任何差异。如果查看HBaseStorageHandler类,您将看到它在sceneHi Alex后面使用标准HBase java客户端。我已经看过文件了。我知道,如果在相同的数据节点上设置一个配置单元集群,并使用hbase,我可以将一个外部表映射到一个现有的hbase表。因此,如果我理解正确,hive不必为该hbase表存储数据副本,因为它可以直接读取它。现在的问题是,这是否会对hbase的性能产生巨大影响,因为SQL可能会扫描hbase表中的太多行,或者SQL执行是一项复杂的map reduce任务?@Alexis我们公司实际上就是这样使用它的。Hive将执行SQL查询到HBase扫描程序的转换器角色,因此从技术上讲,如果您直接通过HBase执行此步骤,或者允许Hive执行此步骤,则不会有任何差异。如果查看HBaseStorageHandler类,您将看到它在幕后使用标准HBase java客户端