Hive 简介

大数据是指包含巨大数据量、高速增长的各种数据的大型数据集。

使用传统的数据管理系统,处理大数据很困难。因此,Apache Software Foundation 引入了一个名为 Hadoop 的框架来解决大数据管理和处理难题。

 

1. Hadoop

Hadoop 是一个开源框架,用于在分布式环境中存储和处理大数据。它包含两个模块,一个是 MapReduce,另一个是 HDFS,即 Hadoop 分布式文件系统。

  • MapReduce: 这是一个并行编程模型,用于在大型商用硬件集群上处理大量结构化、半结构化和非结构化数据。
  • HDFS: Hadoop 分布式文件系统是 Hadoop 框架的一部分,用于存储和处理数据集。它提供了一个容错文件系统运行在硬件系统上。

Hadoop生态系统包含不同的子项目,例如用于帮助 Hadoop 模块的 Sqoop,Pig 和 Hive。

  • Sqoop: 用于在 HDFS 和 RDBMS 之间导入和导出数据。
  • Pig:  用来为 MapReduce 操作开发脚本的过程语言平台。
  • Hive: 用来开发 SQL 类型脚本来执行 MapReduce 操作的平台。

注意: 有多种方法可以执行 MapReduce 操作:

  • 使用 Java MapReduce 程序的方式处理结构化、半结构化和非结构化数据。
  • MapReduce 使用 Pig 处理结构化和半结构化数据的脚本方法。
  • MapReduce 由 Hive 使用查询语言(HiveQL 或 HQL)处理结构化数据。

 

2. 什么是 Hive

Hive 是一个数据仓库基础设施工具,用于处理 Hadoop 中的结构化数据。

它位于 Hadoop 的顶部,用于汇总大数据,并使查询和分析变得轻松。

Hive 最初由 Facebook 开发,随后 Apache 软件基金会接手,并开发了 Apache Hive 开源软件。

Hive 被不同的公司广泛使用。例如,Amazon 的 Amazon Elastic MapReduce。 

 

Hive 不是:

  • 关系数据库
  • OnLine事务处理(OLTP)的设计
  • 用于实时查询和行级更新的语言

 

3. Hive 特点

  • 它将模式存储在数据库中并将数据处理成 HDFS。
  • 它是为 OLAP 设计的。
  • 它提供用于查询的SQL类型语言,称为 HiveQL 或 HQL。
  • 它是具有快速、可扩展的特性。

 

4. Hive 体系结构

以下组件图描述了 Hive 的体系结构:

Hive体系结构

 

该组件图包含不同的单位,下表描述了每个单元:

单元名称 操作
用户界面 Hive是一个数据仓库基础设施软件,可以创建用户和HDFS之间的交互。Hive支持的用户界面是Hive Web UI,Hive命令行和Hive HD Insight(在Windows服务器中)。
Meta Store Hive选择相应的数据库服务器来存储表,数据库,列的架构或元数据,表格,数据类型和HDFS映射。
HiveQL流程引擎 HiveQL与用于查询Metastore上的模式信息的SQL类似。它是MapReduce程序的传统方法的替代之一。我们可以编写MapReduce作业查询并处理它,而不用Java编写MapReduce程序。
执行引擎 HiveQL进程引擎和MapReduce的结合部分是Hive执行引擎。执行引擎处理查询并生成与MapReduce结果相同的结果。它使用MapReduce的风格。
HDFS或HBASE Hadoop分布式文件系统或HBASE是将数据存储到文件系统的数据存储技术。

 

5. Hive 工作流程

下图描述了Hive和Hadoop之间的工作流程。

Hive如何工作

 

下表定义了Hive如何与Hadoop框架交互:

步骤号 操作
1 执行查询 Hive接口(如命令行或Web UI)向Driver(任何数据库驱动程序,如JDBC,ODBC等)发送查询以执行。
2 获取计划 驱动程序在查询编译器的帮助下解析查询以检查语法和查询计划或查询的要求。
3 获取元数据 编译器将元数据请求发送到Metastore(任何数据库)。
4 发送元数据 Metastore将元数据作为响应发送给编译器。
5 发送计划 编译器检查需求并将计划重新发送给驱动程序。到此为止,查询的解析和编译已完成。
6 执行计划 驱动程序将执行计划发送给执行引擎。
7

执行作业 在内部,执行作业的过程是一个MapReduce作业。执行引擎将作业发送到名称节点中的JobTracker,并将该作业分配给数据节点中的TaskTracker。在这里,查询执行MapReduce作业。

7.1 元数据操作 同时在执行时,执行引擎可以使用Metastore执行元数据操作。
8 获取结果 执行引擎从Data节点接收结果。
9 发送结果 执行引擎将这些结果值发送给驱动程序。
10 发送结果 驱动程序将结果发送给Hive Interfaces。