深入理解 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 框架中的工作流程。

相关推荐
黑客老李2 小时前
区块链 智能合约安全 | 回滚攻击
服务器·数据仓库·hive·hadoop·区块链·php·智能合约
SelectDB技术团队2 小时前
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
大数据·elasticsearch·金融·doris·日志分析
MXsoft6183 小时前
华为E9000刀箱服务器监控指标解读
大数据·运维
cr72583 小时前
MCP Server 开发实战:无缝对接 LLM 和 Elasticsearch
大数据·elasticsearch·搜索引擎
codeBrute3 小时前
Elasticsearch的经典面试题及详细解答
大数据·elasticsearch·搜索引擎
qzWsong4 小时前
hive 自动检测、自动重启、记录检测日志、自动清理日志
数据仓库·hive·hadoop
中科岩创4 小时前
广东某海水取排水管线工程边坡自动化监测
大数据·物联网
AI量化投资实验室5 小时前
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
大数据·人工智能·重构
SelectDB6 小时前
Apache Doris 2.1.8 版本正式发布
大数据·数据库·数据分析
TMT星球6 小时前
生数科技携手央视新闻《文博日历》,推动AI视频技术的创新应用
大数据·人工智能·科技