Hive 简介


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

Hadoop


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

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

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

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

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

  • Pig: 它是用于开发 MapReduce 操作脚本的过程语言平台。

  • Hive: 它是一个用于开发 SQL 类型脚本来执行 MapReduce 操作的平台。

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

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

什么是Hive


Hive 是一种数据仓库基础设施工具,用于在 Hadoop 中处理结构化数据。它驻留在 Hadoop 之上以汇总大数据,并使查询和分析变得容易。

Hive 最初是由 Facebook 开发的,后来 Apache 软件基金会接受了它,并以 Apache Hive 的名义将其作为开源进一步开发。它被不同的公司使用。例如,Amazon 在 Amazon Elastic MapReduce 中使用它。

Hive 不是

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

Hive 的特点


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

Hive 的架构


以下组件图描述了 Hive 的架构:

Hive Architecture

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

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

Hive 的工作


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

How Hive Works

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

步骤 No. 手术
1 执行查询

Hive 接口如 Command Line 或 Web UI 向 Driver(任何数据库驱动程序,如 JDBC、ODBC 等)发送查询以执行。

2 Get Plan

驱动程序借助解析查询的查询编译器来检查语法和查询计划或查询的要求。

3 获取元数据

编译器将元数据请求发送到 Metastore(任何数据库)。

4 发送元数据

Metastore 将元数据作为响应发送给编译器。

5 发送计划

编译器检查需求并将计划重新发送给驱动程序。至此,一个查询的解析和编译就完成了。

6 执行计划

驱动程序将执行计划发送到执行引擎。

7 执行作业

在内部,执行作业的过程是一个 MapReduce 作业。执行引擎将作业发送给位于 Name 节点中的 JobTracker,并将此作业分配给位于 Data 节点中的 TaskTracker。在这里,查询执行 MapReduce 作业。

7.1 元数据操作

同时在执行过程中,执行引擎可以通过 Metastore 执行元数据操作。

8 获取结果

执行引擎从数据节点接收结果。

9 发送结果

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

10 发送结果

驱动程序将结果发送到 Hive 接口。