Hive——Hive的介绍与体系架构(1)
一、什么是Hive?
- 构建在Hadoop上的数据仓库平台,为数据仓库管理提供了许多功能
- Hive基于Hadoop之上的一个数据分析引擎
Hive是一个翻译器
Hive 2.x 以前:SQL -----> Hive ----> MapReduce
Hive 2.x 以后:推荐使用Spark作为SQL的执行引擎(只针对Hadoop 3.x以前)
- 起源自facebook由Jeff Hammerbacher领导的团队
- 2008年facebook把hive项目贡献给Apache
- 定义了一种类SQL语言HiveQL(Hive支持SQL的一个子集(HQL))。可以看成是由SQL到Map-Reduce的映射器
- 提供Hive shell、JDBC/ODBC、Thrift客户端等接
二、Hive的体系架构
- 用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
- CLI,即Shell命令行
- JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
- WebGUI是通过浏览器访问 Hive
- Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
- 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行
- Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)