HDFS已经提供数据存储时为什么要配置Hive?

时间:2018-07-26 07:15:16

标签: hadoop hive hdfs

我已经开始学习Hadoop。我了解HDFS提供了分布式存储系统,而Mapreduce用于数据处理。现在我正在阅读Hadoop生态系统。 从Hive的定义来看,它是一个基于hadoop的数据仓库,用于提供类似SQL的接口。

我的问题是当hadoop提供可容忍的HDFS时,为什么还要配置?蜂巢取代HDFS吗?。

配置单元是否仅提供sql接口或存储?

2 个答案:

答案 0 :(得分:1)

配置单元不替代HDFS。 Hive为存储在HDFS中的数据提供sql类型的接口。它基本上用于查询和分析所存储的数据。从某种意义上说,Hive实际上消除了很多样板代码,如果您使用mapreduce,则必须编写这些样板代码。例如,仅考虑您将如何在mapreduce中创建不同类型的联接(左,右,存储桶)或group by子句或任何其他sql子句,您将得到答案(您的代码行将轻松缩放为100) 。 Hive提供了现成的功能。您不需要在mapreduce中编写那些冗长的程序。 Hive已经为您做到了。

需要注意的一件事是,Hive本身在后台使用Mapreduce。因此,任何分组,计数,联接都仅转换为mapreduce作业。您可以将其更改为Tez / Spark。

对于第二个问题,hive不提供任何存储,它仅使用一个数据库(默认情况下为derby,如果要使用其他数据库,则MySQL是一个不错的选择)作为元存储,仅用于存储与表,分区,视图,存储桶等。(元数据就像表的位置,表中存储的数据类型,表的分区信息,创建日期,修改日期等。)

答案 1 :(得分:0)

要在评论中回答您的问题...

Hive可以处理结构化(csv,txt等)数据和半结构化(xml,json,parquet等)。它无法处理音频,视频等非结构化数据。

注意:半结构化数据可以在DDL中处理,也可以通过spark放入Hive中。

我鼓励您学习蜂巢中的外部表和托管表。

学习愉快。