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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 Python 本地客户端操作读写云服务器 Redis 缓存数据库详细教程(更新中)

Redis 基本概述 Redis(Remote Dictionary Server)是一个开源的使用 ANSI C 语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构服务器,因为值(value…

本地虚拟机服务器修改站点根目录并使用域名访问的简单示例

说明:本文提及效果是使用vmware虚拟机,镜像文件是Rocky8.6 一、配置文件路径 1. /etc/httpd/conf/httpd.conf #主配置文件 2. /etc/httpd/conf.d/*.conf #调用配置文件 调用配置文件的使用: vim /etc/httpd/conf.d/webpage.conf 因为在主配…

5个免费的3D钣金CAD软件

如果你正在设计简单的折叠钣金零件,则只需设计一些具有圆角半径的法兰:一个简单的钣金模块。 首先,你可以采用老式方式绘图并以 2D 方式完成所有操作。 许多传统制造商仍在使用 2D DWG 和 DXF 图纸。 因此,你很有可能只需快速起草…

【MySQL】DQL-聚合函数介绍&常见聚合函数&语法&注意事项&可cv例题语句

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

java Web 疫苗预约管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 疫苗预约管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使…

使用1panel部署Ollama WebUI(dcoekr版)浅谈

文章目录 说明配置镜像加速Ollama WebUI容器部署Ollama WebUI使用问题解决:访问页面空白 说明 1Panel简化了docker的部署,提供了可视化的操作,但是我在尝试创建Ollama WebUI容器时,遇到了从github拉取镜像网速很慢的问题&#xf…

公司官网怎么才会被百度收录

在互联网时代,公司官网是企业展示自身形象、产品与服务的重要窗口。然而,即使拥有精美的官网,如果不被搜索引擎收录,就无法被用户发现。本文将介绍公司官网如何被百度收录的一些方法和步骤。 1. 创建和提交网站地图 创建网站地图…

Matlab|孤岛划分|弹性配网故障划分模型

目录 1 主要内容 1.1 DistFlow 模型 1.2 虚拟潮流 1.3 目标函数 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序主要复现《A New Model for Resilient Distribution Systems by Microgrids Formation》,建立灾害情况下配网优化孤岛划分方案,通…

【Linux】POSIX信号量{基于环形队列的PC模型/理解信号量的出现/参考代码}

文章目录 1.POSIX信号量1.1介绍1.2接口 2.基于环形队列的PC模型2.1环形队列常用计算2.2如何设计?2.3如何实现? 3.细节处理3.1空间资源和数据资源3.2push/pop3.3理解信号量的出现1.回顾基于阻塞队列的PC模型中条件变量的使用2.如何理解信号量的投入使用&a…

P8681 [蓝桥杯 2019 省 AB] 完全二叉树的权值

题目描述 给定一棵包含 �N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 �1,�2,⋯��A1​,A2​,⋯AN​,如下图所示: 现在小明要把相同…

9.动态规划——1.从递归到动态规划

例题——N阶楼梯上楼问题 分析 大事化小:爬N层有F(N)种可能,有 F ( N ) F ( N − 1 ) F ( N − 2 ) F(N)F(N-1)F(N-2) F(N)F(N−1)F(N−2)小事化了: F ( 1 ) 1 , F ( 2 ) 2 F(1)1,F(2)2 F(1)1,F(2)2 …

IDE/VS2015和VS2017帮助文档MSDN安装和使用

文章目录 概述VS2015MSDN离线安装离线MSDN的下载离线MSDN安装 MSDN使用方法从VS内F1启动直接启动帮助程序跳转到了Qt的帮助网页 VS2017在线安装MSDN有些函数在本地MSDN没有帮助?切换中英文在线帮助文档 概述 本文主要介绍了VS集成开发环境中,帮助文档MS…

R语言颜色细分

1.如何对R语言中两种颜色之间进行细分 2.代码&#xff1a; x <- colorRampPalette(c("#FC8D62","#FDEAE6"))(12) #打印向量值 # 按字典顺序排序颜色值 x_sorted <- sort(x,decreasing TRUE)# 打印排序后的颜色值 print(x_sorted)#展示颜色 scales:…

Linux系统---如何理解Linux中的文件系统

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、理解文件系统 1.ls与stat 我们使用ls -l的时候看到的除了看到文件名&#xff0c;还看到了文件元数据。 每行包含7列…

神经网络与深度学习(一)

线性回归 定义 利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法 要素 训练集&#xff08;训练数据&#xff09;输出数据拟合函数数据条目数 场景 预测价格&#xff08;房屋、股票等&#xff09;、预测住院时间&#…

TASKPROMPTER

baseline模型的预训练权重就有1.6G! 多吓人呐&#xff0c;当时我就暂停下载了&#xff0c;不建议复现

python opencv 直线检测

直线检测 前期准备 import cv2 import numpy as np# 读取图片 img cv2.imread(r"C:\Users\HONOR\Desktop\12.png") # 灰度转换 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 # reg, img cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 显示二值化…

数据结构 - 图

参考链接&#xff1a;数据结构&#xff1a;图(Graph)【详解】_图数据结构-CSDN博客 图的定义 图(Graph)是由顶点的有穷非空集合 V ( G ) 和顶点之间边的集合 E ( G ) 组成&#xff0c;通常表示为: G ( V , E ) &#xff0c;其中&#xff0c; G 表示个图&#xff0c; V 是图 G…

QT中的文件操作QFile、QDataStream、QTextStream、QBuffer

文件操作概述 1、Qt中IO操作的处理方式 &#xff08;1&#xff09;、Qt通过统一的接口简化了文件与外部设备的操作方式 &#xff08;2&#xff09;、Qt中的文件被看做是一种特殊的外部设备 &#xff08;3&#xff09;、Qt中的文件操作与外部设备操作相同 2、IO操作中的关键…

设计模式9--单例模式

定义 案例一 案例二 优缺点