Hive概述
1. Hive介绍
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL的查询功能。
Hive基本原理是将HQL语句自动转换成可以在计算引擎上执行的任务。
Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下。
2. Hive应用场景
Hive适合于数据仓库应用程序,进行静态数据分析,不需要快速响应给出结果,而且数据本身不会频繁变化。Hive不支持OLTP(联机事务处理),更接近OLAP(联机分析技术)工具。
3. Hive与传统数据库比较
Hive不推荐进行记录级别的插入、更新和删除。
Hive支持struct,map和array集合数据类型。破坏标准格式会增大数据冗余,导致消耗不必要的磁盘空间,可能造成数据不一致。但是在大数据系统中,按数据集进行封装可以减少寻址次数,提升查询速度,提高吞吐量。
Hive是读时模式。保存表数据时不对数据进行校验,从而提高加载速度,在查询时验证,不符合格式的数据设置为NULL。
Hive不支持OLTP(联机事务处理),更接近OLAP(联机分析技术)工具。因为Hive任务的启动过程需要较长时间, Hive查询延时比较严重。
4. Hive架构
MetaStore:存储表,列和分区等元数据,为关系型数据库。
Driver:管理HiveQL执行的生命周期并贯穿Hive任务整个执行期间。
Compiler :编译HiveQL并将其转化为一系列相互依赖的任务。
Optimizer:优化器,分为逻辑优化器和物理优化器,分别对HiveQL生成的执行计划和任务进行优化。
Executor:按照任务的依赖关系分别执行任务。
ThriftServer:提供thrift接口,作为JDBC和ODBC的服务端,并将Hive和其他应用程序集成起来。
Clients:包含命令行接口(CLI/Beeline) 和JDBC/ODBC 接口,为用户访问提供接口。
WebHcat:负责对外提供DDL、提交任务等REST API服务。
5. Hive数据存储模型
Hcatalog:Hadoop的表和存储管理层,它使使用不同数据处理工具的用户能够更轻松地在网格上读写数据。
数据库:创建表时如果不指定数据库,则默认为default数据库。
表:物理概念,实际对应HDFS上的一个目录。
分区:对应所在表所在目录下的一个子目录,分区可以很明显的提高查询效率。
桶:对应表或分区所在路径的一个文件,数据按照某个字段的值Hash后放入某个桶中,桶内可排序。
倾斜数据:数据集中于个别字段值的场景。
正常数据:不存在倾斜的数据。
6. Hive编译流程
Parser将HQL转换成抽象语法树。
Semantic Analyzer将抽象语法树转换成查询块。
Logic Plan Generator将查询块转换成逻辑查询计划。
LogicalOptimizer优化逻辑查询计划。
Physical Plan Generator将逻辑计划转换成物理计划。
PhysicalOptimizer优化物理计划。
- 点赞
- 收藏
- 关注作者
评论(0)