Hive概述

举报
IisAf1sh 发表于 2020/05/20 11:20:35 2020/05/20
【摘要】 本文简要介绍Hive基础知识,包括应用场景、架构、数据存储模型、编译流程等。

1.     Hive介绍

  • Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL的查询功能。

  • Hive基本原理是将HQL语句自动转换成可以在计算引擎上执行的任务。

  • Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS Hive 设定的目录下。

2.     Hive应用场景

Hive适合于数据仓库应用程序,进行静态数据分析,不需要快速响应给出结果,而且数据本身不会频繁变化。Hive不支持OLTP(联机事务处理),更接近OLAP(联机分析技术)工具。

3.     Hive与传统数据库比较

  • Hive不推荐进行记录级别的插入、更新和删除。

  • Hive支持struct,maparray集合数据类型。破坏标准格式会增大数据冗余,导致消耗不必要的磁盘空间,可能造成数据不一致。但是在大数据系统中,按数据集进行封装可以减少寻址次数,提升查询速度,提高吞吐量。

  • Hive是读时模式。保存表数据时不对数据进行校验,从而提高加载速度,在查询时验证,不符合格式的数据设置为NULL

  • Hive不支持OLTP(联机事务处理),更接近OLAP(联机分析技术)工具。因为Hive任务的启动过程需要较长时间, Hive查询延时比较严重。

4.     Hive架构

  • MetaStore:存储表,列和分区等元数据,为关系型数据库。

  • Driver:管理HiveQL执行的生命周期并贯穿Hive任务整个执行期间。

  • Compiler :编译HiveQL并将其转化为一系列相互依赖的任务。

  • Optimizer:优化器,分为逻辑优化器和物理优化器,分别对HiveQL生成的执行计划和任务进行优化。

  • Executor:按照任务的依赖关系分别执行任务。

  • ThriftServer:提供thrift接口,作为JDBCODBC的服务端,并将Hive和其他应用程序集成起来。

  • Clients:包含命令行接口(CLI/Beeline) JDBC/ODBC 接口,为用户访问提供接口。

  • WebHcat:负责对外提供DDL、提交任务等REST API服务。

5.     Hive数据存储模型

  • HcatalogHadoop的表和存储管理层,它使使用不同数据处理工具的用户能够更轻松地在网格上读写数据。

  • 数据库:创建表时如果不指定数据库,则默认为default数据库。

  • 表:物理概念,实际对应HDFS上的一个目录。

  • 分区:对应所在表所在目录下的一个子目录,分区可以很明显的提高查询效率。

  • 桶:对应表或分区所在路径的一个文件,数据按照某个字段的值Hash后放入某个桶中,桶内可排序。

  • 倾斜数据:数据集中于个别字段值的场景。

  • 正常数据:不存在倾斜的数据。

6.     Hive编译流程

  • ParserHQL转换成抽象语法树。

  • Semantic Analyzer将抽象语法树转换成查询块。

  • Logic Plan Generator将查询块转换成逻辑查询计划。

  • LogicalOptimizer优化逻辑查询计划。

  • Physical Plan Generator将逻辑计划转换成物理计划。

  • PhysicalOptimizer优化物理计划。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。