首页 > 代码库 > 2. Hive介绍

2. Hive介绍

一:  Hive基本概念                                                                           

1.  Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 

    其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

2.  Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。

3.  Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。 

Hive牛逼的地方就在于:

1. 是基于MapReduce的基础上,支持sql语法

2.  对上传到数据仓库的数据没有任何格式要求 

     

二:  Hive的系统架构  

技术分享

1.  用户接口主要有三个:CLI,JDBC/ODBC和 WebUI

1)  CLI,即Shell命令行

2)  JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似

3)  WebGUI是通过浏览器访问 Hive

2.  Hive 将元数据存储在数据库中(metastore)

目前只支持mysql、derby。

Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

3.  HQL的解析、编译、运行

解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS 中,并在随后有MapReduce 调用执行

4.  Hive 的数据存储位置

在HDFS 中,大部分的查询由MapReduce 完成

(包含 * 的查询,特例:select * from table 不会生成 MapRedcue 任务)

2. Hive介绍