hive数据仓库--Hive介绍

news2025/2/26 14:52:07

1 什么是Hive

Hive是基于Hadoop的⼀个数据仓库⼯具,⽤来进⾏数据提取、转化、加载,这是⼀

种可以存储、查询和分析存储在Hadoop中的⼤规模数据的机制。Hive数据仓库⼯具能

将结构化的数据⽂件映射为⼀张数据库表,并提供类SQL的查询功能,能将SQL语句转

变成 MapReduce 任务来执⾏。它是由Facebook开发,⽤于解决海量结构化⽇志的

数据统计⼯具。

2 Hive的本质

Hive通过HQL语⾔进⾏数据查询,本质上是将HQL语句转化为MapReduce任务。

下图展示HQL的查询过程。

Hive中的数据存储在HDFS上

Hive分析数据是通过MapReduce实现的

Hive是运⾏在Yarn上的

所以Hive是运⾏在Hadoop之上的⼀种数据仓库⼯具。

3 Hive的优缺点

3.1 优点

Hive的查询采⽤类 SQL 的HQL语⾔,提供快速开发的能⼒(简单、容易上⼿)。

HQL可以⾃动转化成多个MapReduce任务,通过执⾏MapReduce任务达到数据操

作的⽬的。避免了开发⼈员去写 MapReduce的过程,学习成本低。

Hive 的执⾏延迟⽐较⾼,因此 Hive 常⽤于数据分析,对实时性要求不⾼的场合。

Hive⼗分适合对数据仓库进⾏统计分析。

Hive 优势在于处理⼤数据,对于处理⼩数据没有优势,因为 Hive 的执⾏延迟⽐较

⾼。

Hive ⽀持⽤户⾃定义函数,⽤户可以根据⾃⼰的需求来实现⾃⼰的函数。

Hive具有良好的可申缩性、可扩展性、容错性、输⼊格式的松散耦合。

3.2 缺点

Hive不适合⽤于联机事务处理(OLTP),也不提供实时查询功能。对实时性要求较

⾼的OLAP也不适⽤。

Hive 的 HQL 语⾔表达能⼒不⾜

⽆法表达迭代式算法

不擅⻓数据挖掘⼯作,由于 MapReduce 数据处理流程的限制,效率更⾼的算法

⽆法实现。

Hive 的效率⽐较低

Hive ⾃动⽣成的 MapReduce 作业不够智能化,存在任务冗余及任务调度不合理

情况。

Hive 调优⽐较困难,粒度较粗。

4 Hive架构

(1) ⽤户接⼝(User Interface)

⽤户访问Hive的接⼝,包括CLI(Command-Line Interface)、JDBC/ODBC(jdbc 访问 hive)、WebUI(浏览器访问 hive)⼏种形式。

(2) Driver

jdbc驱动程序

(3) SQL Parser解析器

将 SQL 字符串转换成抽象语法树 AST,这⼀步⼀般都⽤第 三⽅⼯具库完成,⽐如

antlr;对 AST 进⾏语法分析,⽐如表是否存在、字段是否存在、SQL 语义是否有误。

(4) Physical Plan编译器

将 AST 编译⽣成逻辑执⾏计划。

(5) Query Optimizer优化器

对逻辑执⾏计划进⾏优化。

(6) Execution执⾏器

把逻辑执⾏计划转换成可以运⾏的物理计划。对于 Hive 来 说,就是MapReduce。

(7) Meta Store (元数据)

元数据包括表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字

段、 表的类型(是否是外部表)、表的数据所在⽬录等。默认存储在⾃带的 derby 数

据库中,推荐使⽤ MySQL 存储 Metastore。

4.1 Hive和Hadoop之间的⼯作流程

下表定义了Hive如何与Hadoop框架交互:

步骤号 操作

1 ”执⾏查询” Hive接⼝(如命令⾏或Web UI)向Driver(任何数据库驱动程

序,如JDBC,ODBC等)发送查询以执⾏。

2 ”获取计划” 驱动程序在查询编译器的帮助下解析查询以检查语法和查询计

划或查询的要求。

3 ”获取元数据” 编译器将元数据请求发送到Metastore(任何数据库)。

4

”发送元数据” Metastore将元数据作为响应发送给编译器。

5

”发送计划” 编译器检查需求并将计划重新发送给驱动程序。到此为⽌,查

询的解析和编译已完成。

6

”执⾏计划” 驱动程序将执⾏计划发送给执⾏引擎。

7 ”执⾏作业” 在内部,执⾏作业的过程是⼀个MapReduce作业。执⾏引擎

将作业发送到名称节点中的JobTracker,并将该作业分配给数据节点中的

TaskTracker。在这⾥,查询执⾏MapReduce作业。

7.1 ”元数据操作” 同时在执⾏时,执⾏引擎可以使⽤Metastore执⾏元数据操

作。

8 ”取结果” 执⾏引擎从Data节点接收结果。

9 ”发送结果” 执⾏引擎将这些结果值发送给驱动程序。

10 ”发送结果” 驱动程序将结果发送给Hive Interfaces。

5 Hive与数据库的⽐较

Hive虽然采⽤了类似SQL的查询语⾔HQL(Hive Query Language),但除了查询

语⾔相似之外,不要把Hive理解成是⼀种数据库。

数据库主要应⽤于在线事务处理(OLTP)和在线分析处理(OLAP),强调的是

事务的时效性与可靠性。⽽Hive是⼀种数据仓库技术,主要⽤应于对时效性要求不⾼的

批量数据统计分析,它强调的是数据处理的吞吐率。

下⾯介绍两者之间的主要差别:

5.1 数据规模⽅⾯

Hive集群采⽤的是分布式计算技术,天然⽀持并⾏计算,具有很好的申缩性、可扩

展性、安全性。因此可以⽀持很⼤规模的数据。

数据库集群⼀般采⽤的是分库分表的技术,⽀持纵向扩展,但难以进⾏横向扩展,

集群规模较⼩,所以数据库可以⽀持的数据规模较⼩,申缩性、可扩展性不好。

5.2 查询语⾔⽅⾯

SQL被⼴泛的应⽤于数据库技术中,有着⼴泛的⽤户群体,为了降低初学者的学习

成本。因此,把Hive的查询语⾔HQL设计成了类 SQL 的查询语⾔。熟悉 SQL 的开发者

可以很⽅便地使⽤ Hive。

5.3 数据更新⽅⾯

Hive数据仓库具有读多写少的特点。因此,Hive不建议对数据进⾏改写,所有的数

据都是在加载的时候确定好的。原因是Hive是建⽴在Hadoop基础上的,⽽HDFS是只⽀

持追加数据不⽀持修改数据。

数据库中的数据要保证能够随时查询、新增、修改和删除。

5.4 执⾏延时⽅⾯

Hive执⾏延时⾼主要有两个原因:

(1)查询⼀般不使⽤索引,需要扫描整个表

(2)采⽤ MapReduce 框架。由于 MapReduce 本身具有较⾼的延迟,因此Hive也

有较⾼的延迟。

数据库的执⾏延迟较低是有条件的,即数据规模较⼩,当数据规模⼤到超过数据库

的处理能⼒的时候,Hive 的并⾏计算就能体现出优势。

5.5 应⽤场景⽅⾯

Hive主要应⽤于时实性要求不⾼的⼤规模数据的统计分析;数据库主要应⽤于数据

规模较⼩、实时性要求较⾼的在线事务处理(OLTP)和在线分析处理(OLAP)。

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

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

相关文章

spring(七):事务操作

spring(七):事务操作前言一、什么是事务二、事务四个特性(ACID)三、事务操作(搭建事务操作环境)四、事务操作(Spring 事务管理介绍)五、事务操作(注解声明式事…

SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】

文章目录前言1、分布式情况下如何加锁2、具体实现过程3、测试3.1 一个服务按照多个端口同时启动3.2 使用jmeter进行压测前言 上一篇实现了单体应用下如何上锁,这一篇主要说明如何在分布式场景下上锁 上一篇地址:加锁 1、分布式情况下如何加锁 需要注意的点是: 在上锁和释放…

C/C++每日一练(20230412)

目录 1. 二维数组找最值 🌟🌟 2. 排序 🌟 3. 二叉树展开为链表 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 二维…

使用ebpf 监控golang 应用

一、背景 使用ebpf 监控grpc-go的应用,grpc-go http2 client的处理点 func (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error { ...... }// operateHeaders takes action on the decoded headers. f…

大数据 | Hadoop集群搭建(完全分布式)

知识目录一、前言二、配置三台虚拟机2.1 克隆三台虚拟机2.2 配置克隆的虚拟机2.3 使用Xshell连接虚拟机2.4 配置SSH免密登录三、Hadoop集群准备3.1 安装 rsync3.2 安装xsync分发脚本3.3 安装JDK和安装Hadoop3.4 配置环境变量3.5 分发四、Hadoop集群搭建4.1 修改配置文件4.2 配置…

Python数据分析案例24——基于深度学习的锂电池寿命预测

本期开始案例较为硬核起来了,适合理工科的硕士,人文社科的同学可以看前面的案例。 案例背景 这篇文章是去年就发了,刊物也印刷了,现在分享一部分代码作为案例给需要的同学。 原文链接(知网文章 C核)&…

OSPF的优化

O_ASE --- 标志域外路由信息 --- 因为域外的路由信息不可控性较强,所以,信任程度较低,我们将其优先级设置为150。 LSA --- 链路状态通告 --- OSPF协议在不同网络环境下产生的用于携带和传递不同的信息。 LSDB --- 链路状态数据库 SPF --- 最短…

【数据分析实战】基于python对Airbnb房源进行数据分析

文章目录📚引言📖数据加载以及基本观察📃缺失值观察及处理🔖缺失值观察以及可视化🔖缺失值处理📃异常值观察及处理📖数据探索💡哪个区域的房源最受欢迎?💡哪种…

基于opencv的边缘检测方法

1、梯度运算 用OpenCV的形态变换( 膨胀、腐蚀、开运算和闭运算)函数morphologyEx 梯度运算即膨胀结果-腐蚀结果: 【注意】对于二值图像来说,必须是前景图像为白色,背景为黑色,否则需要进行反二值化处理 …

Mybatis【第一个 Mybatis 程序】

目录 一、Maven 环境配置 1、配置 pom.xml 1.1、依赖的 jar包 1.2、防止资源导出失败 2、在resources下编写 Mybatis核心配置文件 二、搭建结构 1、编写mybatis工具类(utils) 2、编写实体类(pojo) 3、Mybatis 的实现&…

【Vue3实践】(六)Vue3使用vite处理环境变量、打包部署、nginx配置

文章目录1.前言2.环境变量2.1.环境变量文件(.env)2.2.环境变量变量定义与使用3.打包部署3.1.nginx配置3.2.静态站点根路径配置4.总结1.前言 由于在日常开发中会有一部分前端的开发任务,会涉及到Vue的项目的搭建、迭代、构建发布等操作,所以想系统的学习…

Linux:主机USB设备驱动简析

文章目录1. 前言2. 分析背景3. USB 总线硬件拓扑4. USB 协议栈概览4.1 Linux USB 子系统概览4.2 USB外设(如U盘)固件基础5. Linux USB 子系统初始化6. Linux USB 主机控制器(HCD) 驱动6.1 USB 主机控制器驱动初始化6.2 USB 主机控制器设备对象注册和驱动加载7. Linux USB 设备驱…

Chatgpt接入Csdn:实现自动回复、评论、点赞

背景 起初,我只是想自己弄个工具,用来处理一下大佬们的三连支持,后面我发现大家都在讨论chatgpt,于是我将自动回复和评论消息接入到了Csdn中,不知道这篇文章能不能发出来,代码的话暂时不开源,后…

【从零开始】Docker Desktop:听说你小子要玩我

前言 🍊缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重,高强度的搬砖导致摸鱼时间下降。在上线项目时,看到运维大神一系列骚操作,dockerk8s的知识如过眼云烟,忘得干净的很。所以想重新恶补一下docker知识&…

深度学习中的卷积神经网络

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

OpenCV实战(17)——FAST特征点检测

OpenCV实战(17)——FAST特征点检测0. 前言1. FAST 特征点检测2. 自适应特征检测3. 完整代码小结系列链接0. 前言 Harris 算子根据两个垂直方向上的强度变化率给出了角点(或更一般地说,兴趣点)的数学定义。但使用这种定义需要计算图像导数&am…

Android 14 新 API:直接监听截屏操作,不用再观察媒体文件了~

截屏可以说是手机设备最常用的功能了,Android 系统非常重视截屏方面的体验,近几年的更新都不忘去优化这方面的体验。 从一开始仅在通知栏提醒已截屏,到 Android 11 支持在左下角生成截屏缩略图供编辑或分享,再到 Android 12 支持…

计算机图形学 | 变换与观察

计算机图形学 | 变换与观察计算机图形学 | 变换与观察6.1 神奇的齐次坐标回顾几何阶段几何变换平移比例旋转对称错切齐次坐标的引入齐次坐标的概念和相关问题基于齐次坐标的变换6.2 三维模型,动起来!基本三维变换平移比例旋转对称错切整体比例变换逆变换…

《计算机网络——自顶向下方法》精炼——1.4到1.7

三更灯火五更鸡,努力学习永不止。无惧困难与挑战,砥砺前行向成功。 文章目录引言正文时延排队时延吞吐量协议层次,服务模型(重点)封装(重点)网络安全(选看)恶意软件的分类…

【数据分析与挖掘】数据预处理

目录概述一、数据清洗1.1 缺失值处理1.1.1 拉格朗日插值法1.1.2 牛顿插值法1.2 异常值处理二、数据集成2.1 实体识别2.2 冗余属性识别三、数据变换3.1 简单函数变换3.2 规范化3.3 连续属性离散化3.4 属性构造3.5 小波变换四、数据规约4.1 属性规约4.2 数值规约概述 数据挖掘过…