Apache Hive入门:模拟实现Hive功能、Hive架构、 组件

一、Apache Hive概述

什么是Hive

Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,  基于表提供了一种类似SQL的查询模型,  称为Hive查询语言(HQL),  用于访问和分析存储在Hadoop文件中的大型数据集。

Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行。

Hive由Facebook实现并开源。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第1张图片

 

为什么使用Hive

  • 使用Hadoop MapReduce直接处理数据所面临的问题

人员学习成本太高 需要掌握java语言
MapReduce实现复杂查询逻辑开发难度太大

  • 使用Hive处理数据的好处

操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
避免直接写MapReduce,减少开发人员的学习成本
支持自定义函数,功能扩展很方便
背靠Hadoop,  擅长存储分析海量数据集

Hive和Hadoop关系

  • 从功能来说,数据仓库软件,至少需要具备下述两种能力:

存储数据的能力、分析数据的能力

  • Apache Hive作为一款大数据时代的数据仓库软件,当然也具备上述两种能力。只不过Hive并不是自己实现了上述两种能力,而是借助Hadoop。

Hive利用HDFS存储数据,利用MapReduce查询分析数据。

  • 这样突然发现Hive没啥用,不过是套壳Hadoop罢了。其实不然,  Hive的最大的魅力在于用户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第2张图片

二、场景设计:如何模拟实现Hive功能 

如何模拟实现Apache Hive的功能?

在HDFS文件系统上有一个文件,路径为/data/china_user.txt;

需求:统计来自于上海年龄大于25岁的用户有多少个?

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第3张图片

 场景目的

重点理解下面两点:

Hive能将数据文件映射成为一张表,  这个映射是指什么?

Hive软件本身到底承担了什么功能职责?

映射信息记录

映射在数学上称之为一种对应关系,  比如y=x+1,对于每一个x的值都有与之对应的y的值。

在hive中能够写sql处理的前提是针对表,而不是针对文件,  因此需要将文件和表之间的对应关系描述记录清楚。

映射信息专业的叫法称之为元数据信息  (元数据是指用来描述数据的数据 metadata)。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第4张图片

映射信息记录

具体来看,要记录的元数据信息包括:

表对应着哪个文件(位置信息)
表的列对应着文件哪一个字段(顺序信息)
文件字段之间的分隔符是什么 

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第5张图片

 SQL语法解析、编译

用户写完sql之后,  hive需要针对sql进行语法校验,并且根据记录的元数据信息解读sql背后的含义,制定执行计划。

并且把执行计划转换成MapReduce程序来具体执行,把执行的结果封装返回给用户。

对Hive的理解

Hive能将数据文件映射成为一张表,  这个映射是指什么?

文件和表之间的对应关系

Hive软件本身到底承担了什么功能职责?

SQL语法解析编译成为MapReduce

最终效果

基于上述分析,最终要想模拟实现的Hive的功能,  大致需要下图所示组件参与其中。

从中可以感受一下Hive承担了什么职责,当然,也可以把这个理解为Hive的架构图。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第6张图片

 

三、Apache Hive架构、  组件 

Hive架构图

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第7张图片

Hive组件

  • 用户接口 

包括 CLI、JDBC/ODBC、WebGUI。其中,  CLI(command line interface)为shell命令行;  Hive中的Thrift服务器允许 外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第8张图片

  • 元数据存储

通常是存储在关系数据库如 mysql/derby中。  Hive 中的元数据包括表的名字,表的列和分区及其属性,  表的属性(是 否为外部表等),表的数据所在目录等。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第9张图片

  • Driver驱动程序,包括语法解析器、计划编译器、优化器、  执行器

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

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第10张图片

  • 执行引擎

Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、Tez、  Spark3种执行引擎。

Apache Hive入门:模拟实现Hive功能、Hive架构、 组件_第11张图片

你可能感兴趣的:(hive,apache,hadoop)