Apache Hive概述
什么是Hive
- Apache Hive是一款建立在Hladoop之上的开源
数据仓库
系统,可以将存储在Hadoop文件中的结构化、半结构化数据
文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL)
,用于访问和分析存储在Hadoop文件中的大型数据集。 - Hive核心是将
HQL转换为MapReduce
程序,然后将程序提交到Hadoop集群执行。 - Hive由Facebook实现并开源。
为什么使用Hive
- 使用Hadoop MapReduce直接处理数据所面临的问题
- 人员学习成本太高需要掌握java语言
- MapReduce实现复杂查询逻辑开发难度太大
- 使用Hive处理数据的好处
- 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
- 避免直接写MapReduce,减少开发人员的学习成本
- 支持自定义函数,功能扩展很方便
- 背靠Hadoop,擅长存储分析海量数据集
Hive和Hadoop关系
- 从功能来说,数据仓库软件,至少需要具备下述两种能力︰存储数据的能力、分析数据的能力
- Apache Hive作为一款大数据时代的数据仓库软件,当然也具备上述两种能力。只不过Hive并不是自己实现了上述两种能力,而是借助Hadoop。
Hive利用HDFS存储数据,利用MapReduce查询分析数据
。 - 这样突然发现Hive没啥用,不过是套壳Hladoop罢了。其实不然,Hive的最大的魅力在于用户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析。
Hive的功能模拟
-
Hive能将数据文件映射成为一张表,这个
映射
是指什么?答:文件和表之间的对应关系
-
Hive软件本身到底承担了什么
功能职责
?答:SQL语法解析编译成为MapReduce
Apache Hive架构、组件
架构图
组件
用户接口
:包括CLI、JDBC/OOBC、WebGUI。其中,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。元数据存储
:通常是存储在关系数据库如mysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器
:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS 中,并在随后有执行引擎调用执行。执行引擎
:Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、Tez、Spark三种执行引擎。
Apache Hive数据模型
Data Model概念
- 数据模型∶用来描述数据、组织数据和对数据进行操作,是对现实世界数据特征的描述。
- Hive的数据模型类似于
RDBMS库表结构
,此外还有自己特有模型。 - Hive中的数据可以在粒度级别上分为三类∶
- Table 表
- Partition 分区
- Bucket 分桶
DataBases 数据库
- Hive作为一个数据仓库,在结构上积极向传统数据库看齐,也分数据库(Schema ),每个数据库下面有各