Hive 简明教程

Hive - Introduction

“大数据”一词用于海量数据集的集合,包含海量数据、高速和随日益增加的各种数据。使用传统的数据管理系统很难处理大数据。因此,Apache 软件基金会引入了一个称为 Hadoop 的框架来解决大数据管理和处理难题。

Hadoop

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

  1. MapReduce: 它是一款并行编程模型,用于在大量的商品硬件集群上处理大量结构化、半结构化和非结构化数据。

  2. *HDFS:*Hadoop 分布式文件系统是 Hadoop 框架的一部分,用于存储和处理数据集。它提供了一个基于商品硬件上运行的、容错的文件系统。

Hadoop 生态系统包含不同的子项目(工具),例如 Sqoop、Pig 和 Hive,可用于对 Hadoop 模块提供帮助。

  1. Sqoop: 用于在 HDFS 和 RDBMS 之间导入和导出数据。

  2. Pig: 是用于为 MapReduce 操作开发脚本的程序语言平台。

  3. Hive: 是用于开发 SQL 类型脚本以执行 MapReduce 操作的平台。

Note: 有多种执行 MapReduce 操作的方式:

  1. 使用 Java MapReduce 程序针对结构化、半结构化和非结构化数据采用的传统方式。

  2. 使用 Pig 针对结构化和半结构化数据处理 MapReduce 的脚本方式。

  3. 用于使用 Hive 处理结构化数据的 MapReduce 的 Hive 查询语言(HiveQL 或 HQL)。

What is Hive

Hive 是用于处理 Hadoop 中结构化数据的数据库基础架构工具。它立足于 Hadoop 之上,用于对大数据进行汇总,并使查询和分析变得容易。

Hive 最初由 Facebook 开发,后由 Apache 软件基金会接手并以开源形式进一步开发,名为 Apache Hive。它被不同公司所使用。例如,Amazon 在 Amazon Elastic MapReduce 中使用它。

Hive is not

  1. A relational database

  2. 针对联机事务处理(OLTP)的设计

  3. 一种用于实时查询和行级别更新的语言

Features of Hive

  1. 它将架构存储在数据库中并将经过处理的数据压入 HDFS。

  2. 它专为 OLAP 而设计。

  3. 它为查询提供了名为 HiveQL 或 HQL 的 SQL 类型语言。

  4. 它很熟悉、快速、可扩展且可拓展。

Architecture of Hive

以下组件图解显示了 Hive 的架构:

hive architecture

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

Unit Name

Operation

User Interface

Hive 是一种数据仓库基础架构软件,它能够在用户和 HDFS 之间创建交互。Hive 支持的用户界面包括 Hive Web UI、Hive 命令行和 Hive HD Insight(在 Windows 服务器中)。

Meta Store

Hive 选择各自的数据库服务器来存储数据库、表中的列、其数据类型和 HDFS 映射的架构或元数据。

HiveQL Process Engine

HiveQL 类似于 SQL,用于查询元数据中的架构信息。它是传统的 MapReduce 程序方法的替代方法之一。我们可以编写 MapReduce 作业和处理它的查询,而不是在 Java 中编写 MapReduce 程序。

Execution Engine

HiveQL 处理引擎和 MapReduce 的结合部分是 Hive 执行引擎。执行引擎处理查询并生成与 MapReduce 结果相同的结果。它使用 MapReduce 的代码风格。

HDFS or HBASE

Hadoop 分布式文件系统或 HBASE 是将数据存储到文件系统中的数据存储技术。

Working of Hive

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

how hive works

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

Step No.

Operation

1

*Execute Query*Hive 接口(例如命令行或 Web UI)将查询发送给驱动程序(任何数据库驱动程序,例如 JDBC、ODBC 等)以执行。

2

*Get Plan*驱动程序在查询编译器的帮助下对查询进行解析,以检查语法和查询计划或查询需求。

3

*Get Metadata*编译器向元数据存储(任何数据库)发送元数据请求。

4

*Send Metadata*元数据存储向编译器发送元数据作为响应。

5

*Send Plan*编译器检查需求并将计划重新发送给驱动程序。到此,查询的解析和编译过程完成。

6

*Execute Plan*驱动程序将执行计划发送给执行引擎。

7

*Execute Job*在内部,执行作业的过程是一个 MapReduce 作业。执行引擎将作业发送给 Name 节点中的 JobTracker,它将作业分配给 Data 节点中的 TaskTracker。在此,查询会执行 MapReduce 作业。

7.1

*Metadata Ops*同时在执行过程中,执行引擎可对元数据存储执行元数据操作。

8

*Fetch Result*执行引擎从 Data 节点接收结果。

9

*Send Results*执行引擎将这些结果值发送给驱动程序。

10

*Send Results*驱动程序将结果发送给 Hive 接口。