Hive 教程学习手册

收录于 2023-04-20 00:10:05 · English · بالعربية · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

Hive 是一个数据仓库基础设施工具,用于在 Hadoop 中处理结构化数据。它驻留在 Hadoop 之上以汇总大数据,并使查询和分析变得容易。 这是一个简短的教程,介绍了如何将 Apache Hive HiveQL 与 Hadoop 分布式文件系统一起使用。本教程可以是您成为成功的 Hive Hadoop 开发人员的第一步。
术语"大数据"用于包含海量、高速和日益增加的各种数据的大型数据集的集合。使用传统的数据管理系统,很难处理大数据。因此,Apache 软件基金会引入了一个名为 Hadoop 的框架来解决大数据管理和处理挑战。

Hadoop

Hadoop 是一个开源框架,用于在分布式环境中存储和处理大数据。它包含两个模块,一个是 MapReduce,另一个是 Hadoop 分布式文件系统 (HDFS)。
MapReduce:它是一种并行编程模型,用于在大型商用硬件集群上处理大量结构化、半结构化和非结构化数据。 HDFS:Hadoop 分布式文件系统是 Hadoop 框架的一部分,用于存储和处理数据集。它提供了一个容错的文件系统,可以在商用硬件上运行。
Hadoop 生态系统包含不同的子项目(工具),例如 Sqoop、Pig 和 Hive,用于帮助 Hadoop 模块。
Sqoop:用于在 HDFS 和 RDBMS 之间导入和导出数据。 Pig:它是一个过程语言平台,用于为 MapReduce 操作开发脚本。 Hive:它是一个用于开发 SQL 类型脚本以执行 MapReduce 操作的平台。
注意: MapReduce 操作有多种执行方式:
使用 Java MapReduce 程序处理结构化、半结构化和非结构化数据的传统方法。 MapReduce 使用 Pig 处理结构化和半结构化数据的脚本方法。 用于 MapReduce 的 Hive 查询语言(HiveQL 或 HQL)使用 Hive 处理结构化数据。

什么是Hive

Hive 是一种数据仓库基础架构工具,用于处理 Hadoop 中的结构化数据。它驻留在Hadoop之上,用于汇总大数据,使查询和分析变得容易。
最初 Hive 是由 Facebook 开发的,后来 Apache 软件基金会接受了它,并以 Apache Hive 的名义进一步将其开发为开源。它被不同的公司使用。例如,亚马逊在 Amazon Elastic MapReduce 中使用它。

Hive不是

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

Hive 的特点

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

Hive 架构

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

Hive 的工作

下图描述了 Hive 和 Hadoop 之间的工作流程。
Hive 的工作原理
下表定义了 Hive 如何与 Hadoop 框架交互:
步骤号 操作
1 执行查询
Command Line 或 Web UI 等 Hive 接口将查询发送给 Driver(任何数据库驱动程序,如 JDBC、ODBC 等)执行。
2 获取计划
驱动程序借助解析查询的查询编译器来检查语法和查询计划或查询的要求。
3 获取元数据
编译器向Metastore(任何数据库)发送元数据请求。
4 发送元数据
Metastore 发送元数据作为对编译器的响应。
5 发送计划
编译器检查需求并将计划重新发送给驱动程序。到这里,一个查询的解析和编译就完成了。
6 执行计划
驱动程序将执行计划发送给执行引擎。
7 执行作业
在内部,执行作业的过程是一个MapReduce作业。执行引擎将作业发送到 Name 节点中的 JobTracker,并将该作业分配给 Data 节点中的 TaskTracker。在这里,查询执行 MapReduce 作业。
7.1 Metadata Ops
在执行的同时,执行引擎可以通过 Metastore 执行元数据操作。
8 获取结果
执行引擎从数据节点接收结果。
9 发送结果
执行引擎将这些结果值发送给驱动程序。
10 发送结果
驱动程序将结果发送到 Hive 接口。