Hive【Hive架构及工作原理】

在这里插## 标题入图片描述

> 						大家好,我是程序员小羊!

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog

💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

在这里插入图片描述
在这里插入图片描述

目录

  • 前言
  • 一、Hive的基本概念
    • 1.1Hive的交互方式
    • 1.2Hive与数据库的比较
    • 1.3Hive的优缺点
    • 1.4Hive的应用场景
    • 1.5思考题
  • 二、Hive架构
    • 2.1Hive架构概述
      • 2.1.1客户端提交SQL
      • 2.1.2Beeline的安全性
      • 2.1.3使用JDBC和ODBC连接Hive
    • 2.2元数据存储
    • 2.3客户端安全性
    • 2.4HDFS与Hive集成
  • 三、Driver的工作流程
  • 四、Hive的工作原理

前言

Hive 的前生属于 Facebook,用于解决海量结构化数据的统计分析,现在属于 Apache 软件基金会。Hive 是一个构建在Hadoop之上的数据分析工具(Hive 没有存储数据的能力,只有使用数据的能力),底层由 HDFS 来提供数据存储,可以将结构化的数据文件映射为一张数据库表,并且提供类似 SQL的査询功能,本质就是将 HQL 转化成 MapReduce 程序。说白了 Hive 可以理解为一个将 SOL转换为 MapReduce 程序的工具,甚至更近一步说, Hive 就是一个 MapReduce 客户端.
总结:交互方式采用 SOL,元数据存储在 Derby或 MySOL,数据存储在 HDFS,分析数据底层实现是 MapReduce,执行程序运行在 YARN 上。

一、Hive的基本概念

1.Hive的Logo:形状像蜂巢,由Hadoop的头部和蜜蜂的尾部组成,代表Hive搭建在Hadoop的HDFS之上。
2.Hive的本质:是一个计算框架,提供类似SQL的查询功能,将SQL转换为MapReduce程序。
3.Hive的历史:由Facebook开发并开源贡献给Apache,用于处理海量数据。
在这里插入图片描述

1.1Hive的交互方式

1.Hive的交互方式:通过SQL进行交互,类似于SQL Boy。
2.原数据存储:存储在Hadoop的HDFS中,文件形式存在。
3.底层计算框架:默认使用MapReduce,但可替换为Tez或Spark。

1.2Hive与数据库的比较

1.数据存储:Hive数据存储在HDFS中,不支持修改和添加;数据库支持CRUD操作。
2.执行延迟:Hive执行延迟高,适用于离线处理;数据库执行延迟低,适用于实时处理。
3.可扩展性:Hive具有较高的可扩展性,支持底层计算引擎的替换;数据库可扩展性较低。
4.数据规模:Hive适用于海量数据处理;数据库适用于小规模数据。

在这里插入图片描述

1.3Hive的优缺点

1.优点:学习成本低,减少开发人员学习Java等语言的时间。
2.缺点:SQL表达能力有限,复杂查询优化困难;底层基于MapReduce,执行延迟高,不适合交互式查询。

1.4Hive的应用场景

1.日志分析:通过Hive进行海量日志数据的离线分析。
2.离线数仓:构建离线数据仓库,处理海量结构化数据。

1.5思考题

在这里插入图片描述

二、Hive架构

在这里插入图片描述

2.1Hive架构概述

1.Hive架构重要组成部分为Driver。
2.架构图简单,无需详细拆解。
在这里插入图片描述

在这里插入图片描述

2.1.1客户端提交SQL

1.大数据程序员通过客户端提交SQL。
2.Hive提供Shell界面,可直接在界面中编写和执行SQL。
3.Beeline是一个第三方工具,可用于提交SQL到Hive。

2.1.2Beeline的安全性

1.Beeline起到转发作用,保护底层的Hive。
2.通过Beeline连接,不容易被攻击者直接获取Hive核心信息。
3.Beeline使用了一层额外的加密和转发,增加了安全性。

2.1.3使用JDBC和ODBC连接Hive

1.使用JAVA代码和C语言代码通过JDBC和ODBC连接Hive。
2.可通过IDEA等工具添加Hive相关依赖,使用JDBC代码连接。
3.Hive提供了Web UI,可通过HTTP协议访问。

2.2元数据存储

1.元数据存储表名、列名、字段映射等信息。
2.学习环境中,Hive使用自带的Derby数据库存储元数据。
3.生产环境中,推荐使用外部数据库如MySQL、PostgreSQL等存储元数据。

2.3客户端安全性

1.客户端连接元数据时需要输入用户名、密码、URL等信息。
2.不安全的客户端可能导致敏感信息泄露,被攻击者利用。
3.Hive提供了安全的连接方式,如Hive over 2,增加了连接的安全性。

2.4HDFS与Hive集成

1.HDFS存储Hive的数据文件。
2.Hive通过元数据与HDFS集成,找到数据文件的映射关系。
3.解析、编译、优化和执行等步骤将SQL转换为MapReduce任务在YARN集群上执行。

三、Driver的工作流程

1.Driver包含解析器、编译器、优化器和执行器四大核心组件。
2.解析器校验表名和列名是否存在。
3.编译器将SQL编译成执行语法树。
4.优化器进行基于规则(RBU)和基于代价(CPU)的优化。
5.执行器将优化后的SQL转换为MapReduce任务在YARN集群上执行。
在这里插入图片描述

四、Hive的工作原理

当创建表的时候,需要指定 HDFS 文件路径,表和其文件路径会保存到Metastore,从而建立表和数据的映射关系。当数据加载入表时,根据映射获取到对应的 HDFS 路径,将数据导入。
用户输入SQL后,Hive 会将其转换成 MapReduce 或者 Spark 任务,提交到 YARN 上执行,执行成功将返回结果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

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

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

相关文章

数据管理能力成熟度评估模型(DCMM)详解

数据管理能力成熟度评估模型(DCMM)详解 1. DCMM概述 数据管理能力成熟度评估模型(Data Management Capability Maturity Assessment Model, DCMM)是我国首个数据管理领域的国家标准(GB/T 36073-2018),由国家工业信息安全发展研究中心牵头制定。该模型为我国企业数据…

学习C++、QT---34(使用QT库实现串口调试助手01:解决串口调试助手的UI)

🌟 嗨,我是热爱嵌入式的涛涛同学!每日一言别害怕改变,走出舒适圈才能遇见更好的自己。串口调试助手项目好的现在我们来学习串口调试助手的项目,我们依旧是项目引领学习好的我们最后就是要做成一个类似我们市面上的串口…

Dockerfile 文件及指令详解

什么是Dockerfile 文件Dockerfile 文件是用于构建 docker 镜像的脚本文件,由一系列的指令构成。通过 docker build 命令构建镜像时,Dockerfile 文件中的指令会由上到下执行,每条 指令都将会构建出一个镜像层,这就是镜像的分层。因…

主流Java Redis客户端对决:Jedis、Lettuce与Redisson性能特性深度评测

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…

刷题日记0725

今日计划5道。2/5晚上被一些事影响了心神不宁,再加上感觉睡前做完时间有点紧,逃避的念头出现了。代码意思不进脑子了。做一道是一道。21. 合并两个有序链表默认构造​​:用于创建​​值为0的孤立节点​​(不连接其他节点&#xff…

从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统

基于机器学习的川崎病辅助诊断工具,结合了数据预处理、模型训练、特征解释和交互式可视化。以下是深度解读:1. 技术架构框架:使用 Streamlit 构建 Web 应用,适合快速开发交互式数据科学应用。核心算法:XGBoost&#xf…

【C++详解】模板进阶 非类型模板参数,函数模板特化,类模板全特化、偏特化,模板分离编译

文章目录一、非类型模板参数应用场景二、模板的特化函数模板特化类模板特化全特化偏特化三、模板分离编译解决方法四、模板总结一、非类型模板参数 先前介绍的函数模板和类模板都是针对类型的类模板参数,非类型模板参数有哪些使用场景呢?我们先来看下面这…

10BASE-T1S核心机制——PLCA参数详解

导语: PLCA是10BASE-T1S的核心机制,了解PLCA才能更好地使用10BASE-T1。 本文将通过介绍具体配置,以及实战例子,带你掌握PLCA。 以下测试内容使用KUNHONG-U10BT1S-EVB设备测试, 设备符合IEEE 802.3cg标准&#xff0…

uniapp vue apk那边输入法遮挡页面内容

解决办法:pages.json配置如下{"globalStyle": {"app-plus": {"softinputMode": "adjustResize"}} }效果: 键盘弹出时自动调整窗口大小,所有内容上推(兼容性最佳)文件内容如下…

2507C++,系统服务0与1

原文 窗口上的系统调用通过,每个由系统调用(x64)或sysenter(x86)CPU指令调用的NTDLL.dll,如NTDLL的NtCreateFile的以下输出所示: 这里 0:000> u ntdll!NtCreateFile: 00007ffcc07fcb50 4c8bd1 mov r10,rcx 00007ffcc07fcb53 b855000000 mov eax,55h…

人工智能冗余:大语言模型为何有时表现不佳(以及我们能做些什么)

像 GPT - 4 这样的大语言模型(LLMs)彻底改变了我们与技术交互的方式。它们可以撰写文章、生成代码、回答问题,甚至帮助我们构思创意。但任何花时间使用过这些模型的人都知道,它们的输出有时会让人感觉……不太对劲。表述冗长、格式…

Cursor替代品亚马逊出品Kiro下载

Cursor替代品亚马逊出品Kiro下载 支持Claude Sonnet4.0与3.7 点击下载 备用链接:https://pan.xunlei.com/s/VOW-nBmVgR3ewIIAm7jDsf99A1?pwd6bqu#

MySQL 事务管理

一、前言 CURD 不加控制,会有什么问题? CURD 满足什么属性,能解决上述问题? 买票的过程得是原子的。买票应该不能受互相的影响。买完票应该要永久有效。买前和买后都要是确定的状态。 什么是事务? 事务就是一组 DML 语…

yarn在macOS上的安装与镜像源配置:全方位指南

在前端开发领域,高效的包管理工具是提升开发效率的关键。yarn 作为一款由 Facebook 推出的包管理器,凭借其快速、可靠、安全的特性,逐渐成为众多开发者的首选。对于 macOS 用户而言,正确安装 yarn 并合理配置镜像源,能…

Qt 插件架构开发与应用

Qt的插件架构是其模块化和可扩展性的核心机制之一,它允许开发者通过动态加载插件(Plugins)扩展应用功能,而无需重新编译主程序。这种架构广泛应用于IDE(如Qt Creator)、媒体播放器(解码器扩展&a…

打破传统局限:FinOps云成本优化助力企业云成本管理升级

在云计算日益普及的当下,企业纷纷将业务迁移到云端,以期获得更高效、灵活的IT资源管理方式。然而,云成本管理问题也随之而来,高额的云支出、资源利用不充分、成本控制难等,成为企业云管理之路上的绊脚石。此时,奇墨科技FinOps云成本优化正以其独特的优势,助力企业打破传统局限,…

HDFS写性能优化技巧详解:从理论到实践

HDFS写性能优化概述在大数据处理的生态系统中,Hadoop分布式文件系统(HDFS)作为核心存储层,其写性能直接影响着整个数据处理管道的效率。随着数据规模的指数级增长,企业对HDFS写入吞吐量和延迟的要求日益严苛&#xff0…

基于AutoJawSegment项目的CBCT图像分割实践指南

基于AutoJawSegment项目的CBCT图像分割实践指南 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,觉得好请收藏。点击跳转到网站。 1. 项目背景与概述 1.1 CBCT在口腔医学中的应用 锥形束计算机断层扫描(Cone Beam Computed Tomograph…

docker部署的ragflow服务迁移 数据卷迁移

[docker ragflow数据迁移]目录背景一、我的配置文件✅ 数据存储路径一览(基于你的配置文件)关于这些 volumes 的说明📁 如何查看这些卷在本地的具体位置?可能用到的docker 命令如下。📦 总结建议🛠️ 如果想…

Chrome插件学习笔记(三)

Chrome插件学习笔记(三) 参考文章: https://blog.csdn.net/guoqiankunmiss/article/details/135847091https://blog.csdn.net/guoqiankunmiss/article/details/135974364 1、项目搭建 在前两篇文章中使用的原生js去操作dom,很费劲…