目录标题
- 1、Hive基本概念
- 1.1 定义
- 1.2 优缺点
- 1.3 Hive架构原理
- 1.4 hive和数据库比较
- 2、Hive安装
- 2.1 Hive 安装地址
1、Hive基本概念
1.1 定义
hive是基于hadoop的一个数据仓库工具,可以将结构化数据文件映射成一张表,并提供类SQL查询功能。
本质:将HQL转化为MapReduce程序
特点:
1,Hive处理的数据存储在HDFS
2,Hive分析数据底层的默认实现是Mapreduce
3,执行程序运行在yarn上
1.2 优缺点
优点:
1,简单,容易上手
2,避免了去写mapreduce
3,hive的执行延迟比较高,适用于处理大数据,对实时性要求不高的场合,hive支持用户自定义函数
缺点:
HQL表达能力有限
Hive的效率比较低
1.3 Hive架构原理
1,用户接口 Client
CLI(hive shell)、JDBC/ODBC(java 访问 hive)、WEBUI(浏览器访问 hive)
2,元数据 Metastore
元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
3,Hadoop
使用HDFS进行存储,使用mapreduce进行计算
4,驱动器:Driver
解析器:将SQL字符串转换成抽象语法树AST ,一般用第三方工具库完成
编译器:将AST编译生成逻辑执行计划
优化器:对逻辑执行计划进行优化
执行器:把逻辑执行计划转换成可以运行的物理计划。对于hive来说,就是MR/spark
用户建表–表中导入数据 – 存储在数据文件中 --元数据库 –
用户查询 – hive解析器+元数据 — 体系架构
hive给用户提供一系列接口,接收到用户的SQL指令,使用自己的Driver,结合元数据metastore,将这些指令翻译成mapreduce,提交到hadoop后执行,执行的结果再输出到用户交互接口
1.4 hive和数据库比较
hive是为数据仓库而设计的。
1)数据存储位置
hive是建立在hadoop之上的,所有hive的数据都是存储在HDFS中的,而数据库则可以将数据保存在块设备或者本地文件系统中
2)数据更新
数据仓库的内容是读多写少的,因此,hive中不建议对数据的改写,所有的数据都是在加载的时候确定好的。
数据库中的数据通常是需要进行修改的,可以使用insert into …values 添加数据。update …set …更改数据
3)索引
hive很少建立索引,要访问满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。所以hive不适合在线数据查询
数据库中,通常会针对一个或者几个列建立索引,可以有较高的效率,较低的延迟
4)执行
hive通常是通过hadoop提供的mapreduce来实现的,而数据库通常有自己的执行引擎
5)可扩展性
hive是建立在hadoop上的,因此hive与hadoop的可扩展性是一致的,(世界上最大的 Hadoop 集群在 Yahoo!,2009 年的规模在 4000 台节点左右)
而数据库由于ACID语义的限制,扩展行非常有限,目前最先进的并行数据库 Oracle 在理论上的扩展能力也只有 100 台左右。
6)数据规模
hive可支持很大规模的数据
数据库可以支持的数据规模较小
2、Hive安装
2.1 Hive 安装地址
1.Hive 官网地址
http://hive.apache.org/
2.文档查看地址
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
3.下载地址
http://archive.apache.org/dist/hive/