Hive学习笔记01(Hive基本概念)

2020-07-01 00:00:00 数据 数据库 执行 自己的 延迟

什么是Hive


Hive就是基于Hadoop的一个数据库工具,将结构化的数据文件映射为一张表,并提供类SQL功能。

其本质是:将HQL转化为MapReduce程序。

1.Hive处理的数据存储在HDFS

2.Hive分析数据底层的实现是MapReduce

3.执行程序运行在Yarn上


Hive的优缺点


优点:

1.操作端口类似于SQL,简单易上手。

2.避免了去写MapReduce,减少开发人员的成本。

3.Hive的延迟性比较高,所以常用于对实时性要求不高的环节。

4.Hive的优势在于处理大型数据,对于处理小型数据没多大优势。

5.Hive支持用户自定义函数,用户可以根据自己的需要来实现函数。


缺点:

1.Hive的HQL表达能力比较差,如迭代式算法无法表达,数据挖掘方面不够擅长。

2.Hive的效率比较低,如调度比较困难,粒度比较粗。


Hive的框架



Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,

结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop 中执行,后,将执行返回的结果输出到用户交互接口。


Hive和数据库比较


因为Hive用了类似于SQL的HQL查询语句,所以很容易被误认为是数据库,但其实这两者还是有区别的,接下来我们会一一比较。

1.存储位置

Hive是建立在Hadoop基础上的,所以放在HDFS中,而数据库则将数据放在块设备或者本地文件中。


2.数据更新

因为Hive是根据数据仓库应用设计的,所以数据仓库的内容是读多写少。所以Hive中不建议对数据进行改写,在加载的时候已经确定好的了。而数据库中的数据是要经常进行增删改查的。


3.索引

因为Hive在加载数据的过程中不会对数据进行任何处理,甚至不进行扫描,所以Hive是不会对某些key建立索引的。Hive在需要访问库中的某些特定值时,甚至会暴力扫描整个数据。因此访问延迟较高。但是因为MapReduce的介入,Hive可以并行访问数据,所以即使没索引,Hive还是能体现出优势的。

而在数据库中,往往会建立几个索引,如primary key,所以效率很高,延迟低。


4.执行

Hive中的查询大多是通过Hadoop提供的MapReduce来完成的,而数据库往往会有自己的执行引擎。


5.执行延迟

在Hive查询数据的时候,由于会扫描整个表,所以会有延迟。而且由于MapReduce框架,其本身就具有较高的延迟性,所以综合起来会有延迟。

数据库执行延迟相对较低,当然,这也是建立在数据规模相对较小的基础上的。


6.延展性和数据规模

这点毋庸置疑,在MapReduce的加持下,Hive的数据规模和可延展性都是远远优于数据库的。


今天的学习笔记就分享到这了,我们下回见!~!

后打个小广告,我的公众号(顾先生的AI研习社),会写点学习心得,喜欢可以关注下!

相关文章