1、什么是Hive
Hive 由 Facebook 实现并开源
是基于 Hadoop 的一个数据仓库工具
可以将结构化的数据 映射为一张数据库表,
并提供 HQL(Hive SQL)查询功能(Hive核心功能是做查询)
,
底层数据是存储在 HDFS 上。
Hive 的本质是将 SQL 语句转换为 MapReduce 任务运行,
使不熟悉 MapReduce 的用户很方便地利 用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。
Hive 是基于 Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和管理 。HDFS为Hive提供数据存储,MapReduce为Hive提供了计算引擎,YARN为Hive提供资源调度
数据仓库:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
2、为什么使用Hive
更友好的接口:操作接口采用类 SQL 的语法,提供快速开发的能力
更低的学习成本:避免了写 MapReduce,减少开发人员的学习成本。实际工作中写mapreduce比较少
更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数
补充:Hive仅仅是工具,在安装的时候不用安装在所有的节点上,如果是分布式集群需要安装在多个节点上面
3、Hive特点
优点
- 1、可扩展性,横向扩展,Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务
横向扩展
纵向扩展 - 2、延展性,Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数
- 3、良好的容错性,可以保障即使有节点出现问题,SQL 语句仍可完成执行
缺点 - 1、Hive 不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中·
0.8以后hive支持单条记录的增加
- 2、Hive 的查询延时严重,因为 MapReduce的启动过程消耗很长时间,所以不能用在交互查询系统中。
- 3、Hive 不支持事务(因为不没有增删改,所以主要用来做 OLAP(联机分析处理),而不是 OLTP(联机事务处理),这就是数据处理的两大级别)
4、数据库与数据仓库的区别

数据存储:HDFDS存储在HDFS上,RDBMS是存储是磁盘或者本地文件系统上
执行器:HDFS执行器是mapreduce,RDBMS没有专门的执行引擎
数据插入:HDFS不支持单条数据的增删改,关系型数据库支持事物操作。
mysql的sql语句存在着优化,同样hive的hql也存在优化的可能,sql的执行引擎是关系型数据库的执行引擎,hql的执行引擎是MR
四、Hive 的架构
1、用户接口(CLI、JDBC/ODBC、Web UI)
2、内部架构
Thrift Server:跨语言的服务。有PHP接口、也有PYTHON接口
四大核心组件:
(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
(2) 编译器:编译器是将语法树编译为逻辑执行计划
(3) 优化器:优化器是对逻辑执行计划进行优化
(4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划
4、元数据
什么是元数据:描述数据的数据,hive元数据的存储介质:RDBMS
第一个是表名和文件的对应关系:hql执行的表名要和MapReduce程序输入文件名对应
student(id,name,sex,age,department)
第二是字段名和域值的对应关系:select后面的字段跟文件当中的按照某个特定的分隔符分割出来的对应位置上的值要对应的.对应的位置叫域
网友评论