深入理解 Hadoop 上的 Hive 查询执行流程

在 Hadoop 生态系统中,Hive 是一个重要的分支,它构建在 Hadoop 之上,提供了一个开源的数据仓库系统。它的主要功能是查询和分析存储在 Hadoop 文件中的大型数据集,包括结构化和半结构化数据。Hive 在数据查询、分析和汇总方面发挥着关键作用,同时也有助于提高开发人员的生产力。然而,这种增加的生产力是以增加延迟和降低效率为代价的。

换句话说,Hive 可以被看作是 SQL 的一种变体,而且它确实是一种非常好的 SQL 变体。尽管如此,与传统数据库中的 SQL 系统相比,Hive 仍然有一定的差距。不过,Hive 具有许多用户定义函数,使得开发人员能够轻松为 UDF 做出贡献。

此外,Hive 还可以与各种 Hadoop 包进行连接,例如 RHive、RHipe,甚至 Apache Mahout。这使得在处理复杂的分析处理和具有挑战性的数据格式时,Hive 对开发人员社区非常有帮助。

更具体地说,所谓的"数据仓库"是指用于报告和数据分析的系统。它包括了检查、清理、转换和建模数据等步骤,旨在发现有用的信息并提出结论。

Hive架构

在下图中,Hive 教程阐述了 Hive 架构及其组件:

该组件图中有几个不同的单元。现在,我们来描述一下每个单元:

A. 用户界面

作为一个被广泛认知的数据仓库基础设施软件,Hive 提供了多种用户界面,以便用户与Hadoop分布式文件系统(HDFS)进行交互。这些界面包括了:

Hive Web UI

Hive 命令行

Hive HD Insight(适用于 Windows 服务器)

B. 元商店

Hive 使用元商店来存储表、数据库、表中的列、它们的数据类型以及它们在HDFS中的映射关系,以此来维护模式或元数据。这需要选择相应的数据库服务器来支持。

C. HiveQL 流程引擎

HiveQL(Hive Query Language)可以说是与传统的 SQL 类似,主要用于查询 Metastore 上的架构信息。此外,它也可以作为传统 MapReduce 程序的替代方案之一。开发人员可以使用 HiveQL 编写查询来处理 MapReduce 作业,而不需要编写 Java 程序来实现 MapReduce。

D. 执行引擎

Hive 执行引擎是 HiveQL 流程引擎和 MapReduce 的结合部分。它负责处理查询,并生成与 MapReduce 结果相同的结果。在处理过程中,它还采用了 MapReduce 的风格。

E. 数据存储技术:HDFS 或 HBase

在 Hive 中,数据存储技术主要有两种选择,即将数据存储到 Hadoop 分布式文件系统(HDFS)或者存储到 HBase。这两种技术提供了不同的数据存储解决方案,用户可以根据具体需求进行选择。

**

Hive 是如何工作的?

**

下图展示了Hive和Hadoop之间的工作流程------

让我们看看Hive与 Hadoop 框架的逐步工作流程:

  1. 执行查询

    首先,用户通过 Hive 界面(命令行或 Web UI)将查询发送到 Driver,即任何数据库驱动程序(如 JDBC、ODBC 等)来执行。

  2. 获取计划

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

  3. 获取元数据

    编译器将元数据请求发送到 Metastore,以获取与查询相关的元数据信息。

  4. 发送元数据

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

  5. 发送计划

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

  6. 执行计划

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

  7. 执行作业

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

  8. 元数据操作

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

  9. 获取结果

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

  10. 发送结果

    获取结果后,执行引擎将这些结果值发送给驱动程序,最终发送到 Hive 接口。

通过以上步骤,我们可以清楚地了解 Hive 在 Hadoop 框架中的工作流程。

相关推荐
AI_56781 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
CRzkHbaXTmHw2 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
七夜zippoe2 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥2 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿3 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
忆~遂愿3 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
米羊1214 小时前
已有安全措施确认(上)
大数据·网络
人道领域5 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
qq_12498707535 小时前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
Hello.Reader5 小时前
Flink 使用 Amazon S3 读写、Checkpoint、插件选择与性能优化
大数据·flink