Hive架构原理

Hive


Hive 的架构是设计用于在大数据环境下进行数据仓库操作和分析的系统。它建立在 Hadoop 生态系统之上,利用 Hadoop 的存储(HDFS)和计算(MapReduce、Tez、Spark 等)能力。
在这里插入图片描述

1. 元数据存储(Metastore):

在这里插入图片描述

  • Metastore 是 Hive 的元数据管理组件,负责存储表的结构信息、分区信息、表的存储位置等
  • 这些元数据通常存储在关系型数据库中,如 MySQL、Derby 等
  • Metastore 提供了对元数据的增删改查接口,使用户可以方便地管理表的元数据信息。

2. 查询解析和优化:

  • 当用户提交一个 HiveQL 查询时,Hive 的 Driver 模块负责接收并解析该查询,构建查询执行计划
  • 构建执行计划的过程中,Hive 会进行优化,包括逻辑优化、物理优化和执行计划生成。这些优化可以提高查询的执行效率,并减少资源消耗

3. 查询执行引擎(Execution Engine):

  • 执行引擎负责实际执行查询任务,它根据查询执行计划将任务分发到集群中的多个节点上执行。
  • Hive 支持多种执行引擎,包括传统的 MapReduce、更高效的 Tez、内存计算框架 Spark 等。用户可以根据需求选择合适的执行引擎。

4. 数据存储:

  • Hive 将数据存储在 Hadoop 分布式文件系统(HDFS)中,通常以文件的形式存储
  • 对于内部表(Managed Table),Hive 负责管理数据的存储路径和格式
  • 而对于外部表(External Table),用户可以自行管理数据的存储位置和格式

5. 任务调度和资源管理:

在这里插入图片描述

  • 在执行查询任务时,Hive 需要有效地管理集群资源并调度任务
  • 通常情况下,Hive 使用 YARN(Yet Another Resource Negotiator)作为资源管理器,负责为查询任务分配适当的资源,并监控任务的执行状态

6. 用户界面和客户端接口:

在这里插入图片描述

  • Hive 提供了多种用户界面和客户端接口,使用户可以方便地与系统交互。其中包括命令行界面(CLI)、Web UI、Hue 插件等。
  • 此外,Hive 还提供了 JDBC 和 ODBC 接口,使得用户可以通过标准的数据库连接方式与 Hive 进行交互

7. 扩展性和灵活性:

  • Hive 的架构设计具有良好的扩展性和灵活性,它可以与 Hadoop 生态系统中的其他组件(如 HBase、Kafka、Presto 等)紧密集成,以满足不同的数据处理和分析需求
  • 同时,Hive 还支持用户自定义函数(UDFs)、用户定义的聚合函数(UDAFs)和用户定义的表生成器(UDTFs),使得用户可以根据自身需求扩展 Hive 的功能。

8.Tips:

1.用户接口:Client

CLI(command-line interface)、JDBC/ODBC。
在这里插入图片描述

JDBC和ODBC的区别:

  • (1)JDBC的移植性比ODBC好(通常情况下,安装完ODBC驱动程序之后,还需要经过确定的配置才能够应用。而不相同的配置在不相同数据库服务器之间不能够通用。所以,安装一次就需要再配置一次。JDBC只需要选取适当的JDBC数据库驱动程序,就不需要额外的配置。在安装过程中,JDBC数据库驱动程序会自己完成有关的配置。)
  • (2)两者使用的语言不同,JDBC在Java编程时使用,ODBC一般在C/C++编程时使用

2.元数据:Metastore

  • 元数据包括:数据库(默认是default)、表名、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等
  • 默认存储在自带的derby数据库中,由于derby数据库只支持单客户端访问,生产环境中为了多人开发,推荐使用MySQL存储Metastore。
    在这里插入图片描述

3.驱动器:Driver

在 Hive 架构中,驱动器(Driver)是一个重要的组件,负责接收用户提交的 HiveQL 查询,然后解析、优化并执行这些查询。
在这里插入图片描述

1. 查询解析(Parsing):

  • 驱动器首先会对用户提交的 HiveQL 查询进行解析,将其转换成抽象语法树(Abstract Syntax Tree,AST)
  • 在这个过程中,它会检查查询语句的语法是否正确,以及查询中所引用的表是否存在等
    在这里插入图片描述

2. 查询优化(Optimization):

一旦查询被解析成 AST,驱动器会对其进行优化,以提高查询的执行效率。这个优化过程包括逻辑优化和物理优化两个方面:

  • 逻辑优化:驱动器会对查询进行逻辑优化,例如通过重写查询、合并查询片段等方式,消除查询中的冗余操作,从而减少查询执行的计算量。

  • 物理优化:一旦逻辑优化完成,驱动器会根据执行环境和数据特性选择合适的执行计划。这可能涉及选择合适的执行引擎、优化连接顺序、选择合适的算法等
    在这里插入图片描述


3. 查询执行计划生成(Execution Plan Generation):

  • 优化完成后,驱动器将生成一个执行计划(Execution Plan),描述了如何执行查询以及执行的顺序
  • 执行计划通常是一个有向无环图(DAG),其中每个节点表示一个查询操作,每个边表示数据流向

4. 任务调度和执行(Task Scheduling and Execution):

  • 一旦执行计划生成,驱动器将根据执行计划将任务分发到集群中的多个节点上执行
  • 包括将查询任务转换成 MapReduce 任务、Tez 任务、Spark 任务等,并将这些任务提交给相应的执行引擎执行。

5. 监控和错误处理(Monitoring and Error Handling):

  • 在查询执行过程中,驱动器负责监控任务的执行状态,并及时处理可能出现的错误
  • 它会收集任务执行的日志和统计信息,以便后续的调优和故障排除

6. 结果返回(Result Retrieval):

  • 最后,当查询执行完成后,驱动器会从执行引擎中收集查询结果,并将其返回给用户
  • 用户可以通过命令行界面、Web UI 或客户端接口等方式获取查询结果

驱动器在 Hive 架构中扮演着重要的角色,它负责接收、解析、优化和执行用户提交的查询,保证查询能够高效地在集群上执行,并及时返回执行结果给用户。

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

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

相关文章

Linux(centos)服务器10秒快速配置Java环境

查看是否已安装Java java -version 查看yum能下载的Java版本 yum -y list java*这里选择安装Java 11 yum install -y java-11-openjdk.x86_64查看是否安装成功并配置到环境里 java -version结束

linux系统安全与应用【下】

目录 1.开关机安全控制 1.1GRUB限制 2.终端登录安全控制 2.1 限制root只在安全终端登录 2.2 禁止普通用户登录 3.弱口令检测 3.1 Joth the Ripper(JR) 4.网络端口扫描 4.1 nmap命令 1.开关机安全控制 1.1GRUB限制 通常情况下在系统开机进入GRU…

在Mac M1笔记本上跑大语言模型llama3的4个步骤?(install、pull、run、ask)

要点 Ollama一个功能强大的本地大语言模型LLM运行工具,支持很多模型,并且操作极其简单快速回忆步骤: 下载ollama工具:https://ollama.com/download 下载模型:ollama pull llama3 #根据libs列表直接指定名字 运行模型…

uni-app app和h5的通信

uni-app一套代码同时打包安卓、iOS、h5,有一些需要app与h5的交互通信,目前做到了这块的业务,记录如下: 1.去declould官网,找到uni_webview.js下载链接,将uni_webview.js文件下载到本地,修改uni_webview.js内部配置,将uni修改为webUni,修改好的文件已放到…

搭建知识库-DataWhale笔记

词向量及向量知识库介绍 词向量 词向量定义 在机器学习和自然语言处理(NLP)中,词向量(Embeddings)是一种将非结构化数据,如单词、句子或者整个文档,转化为实数向量的技术。这些实数向量可以被…

LLM学习笔记-3

温度缩放 概念 1)在机器学习中,"温度缩放"通常指的是一种技术,用于调整神经网络输出的概率分布。这个技术通常在 softmax 函数的输出上进行操作。 2)在 softmax 函数中,神经网络会输出一个概率分布&#x…

Spark-机器学习(4)回归学习之逻辑回归

在之前的文章中,我们来学习我们回归中的线性回归,了解了它的算法,知道了它的用法,并带来了简单案例。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请…

数据结构与算法解题-20240422

这里写目录标题 一、2. 两数相加二、67. 二进制求和三、415. 字符串相加四、LCS 01. 下载插件五、71. 简化路径 一、2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 …

vue3左树的全选和反选

<el-input v-model"filterText" placeholder"" style"width: 48%"/><el-button type"primary" click"handleSearch" class"ml-2">查找</el-button><el-radio-group v-model"form.choic…

“磁性蝴蝶”:创新结构纳米石墨烯能更精确控制自旋磁行为

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 深度好文&#xff1a;1300字丨7分钟阅读 摘要&#xff1a;新加坡国立大学的研究团队&#xff0c;开发出一种蝴蝶形磁性纳米石墨烯&#xff0c;包含四个具有铁磁和反铁磁相互作用的不…

【数据结构】二叉树链式结构的实现《遍历,实现》(题库+解析+源码)

前言 二叉树的学习离不开对堆的理解&#xff0c;这是上篇堆的传送门 http://t.csdnimg.cn/F6Jp3 1.二叉树链式结构的实现 1.1 前置说明 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。由于现在大家对二 叉树结构掌握还…

《QT实用小工具·三十六》metro风格的主界面

1、概述 源码放在文章末尾 该项目实现了metro风格的主界面&#xff0c;包含访客登记&#xff0c;记录查询&#xff0c;证件扫描&#xff0c;信息打印&#xff0c;系统设置&#xff0c;系统重启等功能&#xff0c;项目demo演示如下所示&#xff1a; 源码下载