Hive简介

来源:互联网 发布:手机热点控制软件 编辑:程序博客网 时间:2024/05/09 16:24

1, 什么是Hive。
Hive是一个基于Hadoop文件系统的数据仓库架构,可以将结构化的数据文件映射成表,存储到数据库中,并提供类似于SQL一样的查询功能。它为数据仓库的管理员提供多种功能:ETL(数据抽取、转换和加载)、数据存储管理和数据集的查询分析。
Hive具有以下优点:
(1) 操作接口类似于SQL语法,对开发者来说简单易上手;
(2) 开发人员不用再去写MapReduce程序,减少了学习成本;
(3) 采用统一的元数据管理,可以跟impala/spark等共享元数据;
(4) Hive还具有很好的可扩展性,支持用户自定义函数库和自定义存储格式。

2, Hive体系结构。
和MapReduce应用场景相似,Hive适合用来离线处理海量的结构化数据,适用于数据量特别大的情况,并不适合处理海量的小文件,同时具有较强的延时性,不适合用来处理实时性要求比较高的场合。
Hive所管理的数据文件存储在HDFS上,通过Hive提供的类SQL语言-HiveQL,生成MapReduce任务进行计算。所以从本质上来说,HQL语句最终调用的还是MapReduce,只不过仓库管理者不用再编写MapReduce程序,也不用再进行打包部署等操作,直接写HQL语句,就可以对存储在HDFS上的数据文件进行MapReduce操作,大大提高了操作效率。Hive体系结构大体如下:
这里写图片描述

3, Hive的数据存储。

Hive的元数据包括表名、所属的数据库、表的类型、列的字段、表的拥有者、表对应的数据库所在的目录等。由于Hive的元数据可能会频繁的被修改和读取,所以存储到关系型数据库中。Hive自带默认的RDBMS是Derby,由于Derby每次只能被一个用户连接,局限性太大,所以我们一般使用Mysql数据库存储Hive的元数据。

4, Hive Architecture。

Hive通过驱动器来解析HQL,驱动器包括  解析器、编译器,优化器,执行器。   解析器可以将SQL字符串转化成抽象语法树AST,通常由第三方的工具来完成,如antrl;接下来对AST进行语法分析,比如判断要操作的表是否存在,字段是否存在,语句是否有语法语义上的错误等。  编译器将AST编译生成逻辑执行计划。  优化器对逻辑执行计划进行优化。 执行器把逻辑计划转换成可以运行的物理计划,如MapReduce。
0 0