一、hive概念:
1.hive的产生背景:
MapReduce中用于统计分析的数据大部分都是结构化的数据,如果数据量比较小的时候,直接使用mysql,当数据量大的时候,
针对这个结构化的数据的统计分析,sql更为方便,MapReduce的统计分析针对结构化数据的,绝大部分都可以使用sql语句做,比MapReduce开发成本低。出现了一个基于MR编程的,使用sql实现的工具,hive.
2.hive是什么:
1)Hive由Facebook实现并开源,http://hive.apache.org/
2)是基于Hadoop的一个数据仓库工具
3)可以将结构化的数据映射为一张数据库表
4)并提供 HQL(Hive SQL)查询功能
5)底层数据是存储在HDFS上
6)Hive的本质是将SQL语句转换为MapReduce任务运行
7)使不熟悉MapReduce的用户很方便地利用HQL处理和计算HDFS上的结构化数据
8)适用于离线批量计算 。
3.hive的架构:
1)用户接口层:
1.CLI:shell方式操作 2.JDBC/ODBC:Java方式操作hive 3.web UI:可视化界面的操作 不推荐使用, 比较繁琐
2)thrift server层:跨语言操作
对外提供 hive支持跨语言连接的服务
3)元数据层:
hive的数据存储的两大部分:
1、原始数据,真实数据存储在hdfs上的
2、元数据,描述原始数据的数据,描述的是原始数据的存储规则的数据。hive的元数据存在关系型数据库中(mysql)
①表的描述信息:包括表和hdfs的数据对应关系,表的属性
②表的字段信息:字段类型、字段顺序
③数据库的描述信息
4)核心驱动层:
- 驱动器Driver:驱动hql转化为MapReduce到提交的整个过程的执行
- 编译器:内部存储了很多Map和reduce的模板,将hql语句编译为mapreduce任务
- 优化器:将编译器的编译结果做一个优化,最终出现的就是最完美的执行方案
- 执行器:将优化器的优化结果,进行提交给集群进行执行
4.hive的缺点:
1)不支持update、delete操作,支持insert操作,但效率很低
2)查询延时性高
3)不支持事务