简介
Hive:由Facebook开源用于解决海量结构化日志的数据统计。
Hive是管理,读和写数据的工具.
说简单了就是用SQL分析数据.
Hive只能处理结构化数据,处理hadoop里面的数据,你在HDFS上传的数据有很多,比如说软件,视频啥的.只要是文件都能上传到HDFS上面去.但是Hive只能分析结构化的数据,Hive是坐落在hadoop之上的(使用hive前提是必须要安装了hadoop),用来分析大数据的,可以让你的查询和分析更简单.
1.hive处理的数据都在hdfa中,但是hive还会存储一个schema(元数据,就是表结构)在数据库里面.
2.hive是基于在线分析处理,主要为了实现分析功能,分析功能特点是不在乎程序运行时间的,只在乎给大型数据的结果分析出来就行了.
3.hive提供了类似sql的语言,和sql语法还是有点区别的,这个语言主要是用来查询的,叫做hiveql 或者是hql.
不是所有的数据都能被hive分析
hive只能分析结构化数据
hive不是关系型数据库
虽然也是用sql操作hive,关系型数据库特点是基于oltp设计(在线事务处理),关系型数据库最大优势是事务.hive主要是分析数据,而不是生产数据.所以hive只有查询操作,没有写操作.
hive不是语言
hive不能做到关系型数据库的毫秒级查询,查询速度还是挺慢的.主要是用来处理大数据的,编程模型是MapReduce. MapReduce本来就很慢,所以无法做到实时的.
无法做到行级别的更新
行级别的更新是 hive已经存储在hdfs上面了,hdfs不支持随机写,相当于无法随机的更新某一行的内容,也无法随机的删除某一行的内容,因为更新和删除都属于随机写.
hive只支持查询和插入,插入是追加写,不是随机写.
本质
本地是将hql语句转化成MapReduce程序.
运行
hive运行程序是在yarn上面.
hive由来
起初hive是 Facebook设计的,然后之后Apache采纳了hive,并且接着开发,开源.后来起名叫Apache hive .
优缺点
1.优点
1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。
2)避免了去写MapReduce,减少开发人员的学习成本。
3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。
4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。
5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
2.缺点
1.Hive的HQL表达能力有限
(1)迭代式算法无法表达(MapReduce本身就不支持)
(2)数据挖掘方面不擅长
2.Hive的效率比较低
(1)Hive自动生成的MapReduce作业,通常情况下不够智能化
(2)Hive调优比较困难,粒度较粗