Hive:数据分析引擎
了解
大数据的终极目标: 使用SQL语句来处理大数据
-
Hadoop的体系架构中:
- Hive:支持SOL
- Pig:支持PiqLatin
-
Spark的体系架构中:
- Spark SQL:类似Hive,支持SOL、支持DSL
-
另一个:Impala
8.1 什么是Hive?
起源自facebook由Jeff Hammerbacher领导的团队
2008年facebook把hive项目贡献给Apache
定义了一种类SQL语言HiveQL。可以看成是仍SQL到Map-Reduce的映射器
提供Hive shell、JDBC/ODBC、Thrift客户端等接
-
Hive是一个基于HDFS之上的数据仓库
Hive HDFS 表 目录 数据 文件 分区 目录 桶 文件 -
Hive基于Hadoop之上的一个数据分析引擎
-
Hive是一个翻译器,把SQL语句翻译成一个MapReduce程序
-
Hive 2.x 以前:SQL——HIve——MapReduce
-
Hive 2.x 以后:推荐使用Spark作为SQL的执行引擎(只针对Hadoop 3.想以前)
-
常见的数据分析引擎:Hive、Pig、Impala、Spark SQL
-
-
Hive支持SQL的一个子集(SQL92的一个子集)
8.2 Apache Hive的体系结构
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 任务)