Hive架构原理

news2024/11/16 7:23:02

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.coloradmin.cn/o/1616421.html

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

相关文章

go语言并发实战——日志收集系统(六) 编写日志收集系统客户端

上节回顾 在上一篇文章中我们介绍了编写客户端的四个步骤,分别是: 读取配置文件,寻找日志路径初始化服务根据日志路径l来收集日志将收集到的日志发送Kafka中 关于上述的内容博主画了一个思维导图(有点丑,大家勉强看看&#xff0…

iOS - 多线程-GCD

文章目录 iOS - 多线程-GCD1. 常见多线程方案2. GCD2.1 GCD的常见函数GCD中有2个用来执行任务的函数 2.2 GCD的队列2.2.1 GCD的队列可以分为2大类型 2.3 容易混淆的术语2.4.1 有4个术语比较容易混淆:同步、异步、并发、串行 2.4 各种队列的执行效果 3. 死锁3.1 死锁…

鸿蒙开发模拟器的坑, No Devices

问题 我已经安装了模拟器,并且模拟器已经运行了 在Device Manager页面开启模拟器 No Devices 但是这里没有模拟器的选项 解决 添加环境变量 下面步骤 1、清除用户数据 2、 关闭Device Manager 3、 关闭ide 重启ide、开启模拟器 看到有模拟器的选项了

【数据结构|C语言版】算法效率和复杂度分析

前言1. 算法效率2. 大O的渐进表示法3. 时间复杂度3.1 时间复杂度概念3.2 时间复杂度计算举例 4. 空间复杂度4.1 空间复杂度的概念4.2 空间复杂度计算举例 5. 常见复杂度对比结语 ↓ 个人主页:C_GUIQU 个人专栏:【数据结构(C语言版&#xff09…

光伏仿真设计需要用到的工具有哪些?

随着全球能源结构的转型和可持续发展战略的深入实施,光伏发电作为一种清洁、可再生的能源形式,正日益受到广泛关注和应用。在光伏系统的设计和优化过程中,光伏仿真设计工具发挥着至关重要的作用。那么,光伏仿真设计需要用到的工具…

Opencv_3_图像对象的创建与赋值

ColorInvert.h 如下&#xff1a; #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void mat_creation(); }; ColorInvert.cpp 文件如下&#xff1a; #include &q…

【oceanbase】安装ocp,ocp部署oceanbase

https://www.oceanbase.com/docs/common-ocp-1000000000584989 资源 iphostnamecpumem组件192.168.0.71obnode-000-071816oceanbase-ce192.168.0.72obnode-000-072816oceanbase-ce192.168.0.73obnode-000-073816oceanbase-ce192.168.0.74obproxy-000-07424obproxy-ce192.168.0…

springcloud Ribbon的详解

1、Ribbon是什么 Ribbon是Netflix发布的开源项目&#xff0c;Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。 2、Ribbon能干什么 LB负载均衡(Load Balance)是什么&#xff1f;简单的说就是将用户的请求平摊的分配到多个服务上&#xff0c;从而达…

Redis入门到通关之数据结构解析-ZipList

文章目录 ☃️概述☃️ZipListEntry☃️Encoding编码☃️ZipList的连锁更新问题☃️总结 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与…

STM32H750外设ADC之模拟窗口看门狗

目录 概述 1 相关寄存器 2 功能描述 3 AWDx 标志和中断 4 模拟看门狗 1 4.1 模拟看门狗 1 说明 4.2 模拟看门狗通道选择 4.3 阀值选择 5 模拟看门狗 2和3 6 ADCx_AWDy_OUT 信号输出生成 6.1 功能介绍 6.2 输出信号案例 7 模拟看门狗 1、 2、 3 比较 概述 本文主…

深度学习从入门到精通—Transformer

1.绪论介绍 1.1 传统的RNN网络 传统的RNN&#xff08;递归神经网络&#xff09;主要存在以下几个问题&#xff1a; 梯度消失和梯度爆炸&#xff1a;这是RNN最主要的问题。由于序列的长距离依赖&#xff0c;当错误通过层传播时&#xff0c;梯度可以变得非常小&#xff08;消失…

MATLAB中左边的大括号最后一行为什么会留很大的空白——解决

看了一些帖子说改字体&#xff0c;但是并没有什么用&#xff0c;在此给出亲测有效的方法&#xff1a;改变矩阵的行间距 先说一下问题 上图中留有大块空白 **解决办法&#xff1a;**光标放在矩阵上 格式——矩阵——更改矩阵&#xff0c;在矩阵设置中选中“行高相等”&#xff…

基于Springboot的学生毕业离校系统

基于SpringbootVue的学生毕业离校系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 网站首页 离校流程 网站公告 留言反馈 后台登录 学生管理 教师管理 离校流程…

【UI】element-ui的el-dialog的遮罩层在模态框的前面bug

最近在写element ui 的时候使用dialog组件&#xff0c;偶然出现了这种情况 原因&#xff1a; 是因为遮罩层插入进了body标签下&#xff0c;z-index高于当前父元素。 解决&#xff1a;在el-dialog标签里加上:modal-append-to-body"false"就可以了。 饿了么官网文档&a…

Redis - Redisson tryLock 函数参数分析

这里有三个参数&#xff1a; waitTime&#xff1a;等待时间leaseTime&#xff1a;超时施放时间TimeUnit&#xff1a;时间单位 等待时间 如果 ABC… 多个线程去抢夺一把锁&#xff0c;A 成功了&#xff0c;如果设置的是 -1&#xff0c;那么 BCD... 就不等待&#xff0c;直接返…

虚拟化+Docker基本管理

一、虚拟化简介 1、云端 华为云、谷歌云、腾讯云、阿里云、亚马逊、百度云、移动云、天翼云、西部数码云等 1.国内云 华为云、阿里云、腾讯云、天翼云(私有云) 2.国外云 谷歌云、亚马逊 2、云计算的服务模式是分层的 IaaS&#xff1a;Infrastructure&#xff08;基础设…

蓝桥杯第17169题——兽之泪II

问题描述 在蓝桥王国&#xff0c;流传着一个古老的传说&#xff1a;在怪兽谷&#xff0c;有一笔由神圣骑士留下的宝藏。 小蓝是一位年轻而勇敢的冒险家&#xff0c;他决定去寻找宝藏。根据远古卷轴的提示&#xff0c;如果要找到宝藏&#xff0c;那么需要集齐 n 滴兽之泪&#…

【YOLOv8改进[注意力]】YOLOv8添加DAT(Vision Transformer with Deformable Attention)助力涨点

目录 一 DAT 二 YOLOv8添加DAT助力涨点 1 总体修改 2 配置文件 3 训练 其他 一 DAT 官方论文地址&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Xia_Vision_Transformer_With_Deformable_Attention_CVPR_2022_paper.pdf Transformers最近在各种视…

js连接抖音打印组件实现打印

js连接抖音打印组件实现打印小票 安装抖音打印组件 抖音打印组件文档&#xff1a; https://bytedance.larkoffice.com/docs/doccn2vbOOdd3KWrCd6Z93nIlvg 跟着文档案例一步步配基本上没问题&#xff0c; 打印的时候需要设置下打印机名称 export class DouyinPrint {construct…

完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城

源码下载地址&#xff1a;完美运营版商城.zip 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本