1.hive介绍
hive是一个数据仓库的解决方案,它的数据存储依赖于HDFS,数据结算依赖于MR,也就是说,hive就是一个在数据仓库的服务,它只需要安装到一台普通的PC上即可,仅仅对外提供SQL服务(和hadoop、hbase、spark、storm不同,应为这些都是分布式服务),对客户端的SQL最终转换成对HDFS的操作和MR的操作。
hive有两种作用,第一就是是一个数据仓库,他对数据的组织,比如说表、分区等目录结构,第二就是他的SQL实现是基于Mapreduce。
所以,现在hive组织数据是目前无人可比,而它的SQL计算则可以使用MPP、mapreduce、spark迭代式计算、流计算等计算引擎,所以你看见impala、shark、的安装都是基于hive的,就是重用hive的数据仓库功能,即在hive里面组织数据。
2.hive就是服务,不需要分布式安装
hive的表,分区,桶本质就是在HDFS上面建立一些目录,同时借助RDBMS存储自己的元数据(用户的DDL,DML作为元数据,存储在RDMS里面,Hive引擎就会解析这些数据 生成MR的job运行,同时将HIve里面的表存储转换成hdfs的目录)。
3.hive的DDL操作
建立表
1.在rdms里面存储表的列,名称
2.在hdfs里面以表的名称,建立了一个目录
插入数据、查询数据
1 将hql经过解析,形成执行计划,最后生成mr的job运行,而hql里面的表转换成hdfs里面的目录作为mr的输入和输出
聚合函数、窗口函数以及OLAP的CUBE等聚合函数
1 avg、sum、count、rank、cube等度量值的聚合方式。
==================================================================================================
hive的调优:
1、减少shuffle的数据传输、而这块主要就是join连接的优化
2、task任务的个数
3、jvm堆内存、栈内存空间的设置
4、队列的设置、hadoop的调度策略以及资源分配配置