1.Hive系列之简介

news2024/12/28 18:49:59

1. Hive简介

1.1 Hive是什么

Hive是一个基于Hadoop的数据仓库工具,它提供了类似于SQL的查询语言HiveQL,以及用于将查询转换为MapReduce任务的引擎。Hive的主要目的是使数据分析师和开发人员能够轻松地查询和分析存储在Hadoop集群中的数据,而不需要编写复杂的MapReduce代码。

Hive的核心是元数据(Metadata),它将表的结构和数据存储在一个关系型数据库中,例如MySQL或Derby。HiveQL语言类似于SQL,允许用户执行查询、过滤、聚合等操作。Hive将这些查询编译成MapReduce任务,并将任务提交到Hadoop集群中运行。Hive还支持分区表、分桶表、自定义函数等高级功能。

1.2 Hive历史背景

Hive最初由Facebook于2007年开发,旨在使非专业开发人员能够轻松地查询和分析存储在Hadoop集群中的海量数据。当时,Facebook面临着巨大的数据增长和复杂性,需要一种能够处理PB级别数据的工具,并且能够让非专业技术人员也能够使用。

在Hive诞生之前,大数据分析通常需要编写复杂的MapReduce代码,这对非专业技术人员来说很困难。Hive的出现使得数据分析变得更加容易,开发人员可以使用类似于SQL的语言(HiveQL)进行查询和分析,而无需编写复杂的MapReduce代码。同时,Hive还提供了用于将查询转换为MapReduce任务的引擎,使得数据分析人员可以轻松地利用Hadoop集群的计算能力。

Hive最初是作为Facebook内部工具开发的,但很快就被其他公司和组织所采用和推广。2010年,Hive被捐赠给Apache软件基金会,并成为了Apache顶级项目之一。自此以后,Hive的开发和改进由Apache社区负责,成为了一个开源项目。

随着时间的推移,Hive不断更新和改进,提升其性能和易用性。Hive 2.0版本于2016年发布,引入了许多新特性,例如支持ACID事务、向量化查询、快照隔离级别等。此外,Hive还可以与其他Hadoop生态系统的工具和技术进行集成,例如HBase、Spark等,使得用户可以更方便地进行大数据分析和处理。

总的来说,Hive的发展历程充满了创新和变革,它使得大数据分析变得更加容易和便捷,成为了大数据处理领域的一个重要工具。

1.3 Hive优缺点

Hive的优点:

  • 简单易用:HiveQL类似于SQL,使得使用Hive的人员能够轻松地进行查询和分析。
  • 可扩展性:Hive可以在Hadoop集群中进行水平扩展,可以处理PB级别的数据。
  • 兼容性:Hive可以与其他Hadoop生态系统的工具和技术进行集成,例如HBase、Spark等。
  • 开放源代码:Hive是一个开源项目,其源代码可以被修改和定制,以满足特定的需求。

Hive的缺点:

  • 性能问题:Hive的查询性能并不总是最优,特别是对于实时数据和复杂查询,可能需要进行优化。
  • 复杂性:Hive的底层机制是基于MapReduce的,需要一定的编程知识和技能才能进行调优和优化。
  • 数据存储格式限制:Hive仅支持一些特定的数据存储格式,例如ORC、Parquet等,这可能会对一些用户造成限制。
  • 无法实时处理:由于Hive是基于MapReduce的,因此无法进行实时处理,可能需要使用其他技术(例如Spark Streaming)来实现实时数据处理。
1.4 Hive架构原理

Hive的架构主要由四个组件组成:

  1. 用户接口(User Interface):Hive提供了多种用户接口,包括命令行接口(CLI)、图形用户界面(GUI)和ODBC/JDBC接口等,使得用户可以使用不同的方式来查询和分析数据。
  2. 元数据(Metadata):Hive的元数据存储了所有表的结构和数据,以及HiveQL查询的信息。元数据通常存储在关系型数据库中(例如MySQL或Derby),Hive使用Hive Metastore来管理元数据。
  3. 驱动器(Driver):
    (1)解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
    (2)编译器(Physical Plan):将 AST 编译生成逻辑执行计划。
    (3)优化器(Query Optimizer):对逻辑执行计划进行优化。
    (4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说,就是 MR/Spark
  4. Hadoop:Hadoop提供了Hive的底层支持,包括HDFS存储和MapReduce计算。Hive将查询转换为MapReduce任务,并将任务提交到Hadoop集群中运行。
1.5 Hive和数据库比较
  1. 查询语言:传统关系型数据库通常使用SQL语言进行查询和分析数据,而Hive使用类似于SQL的HiveQL语言。HiveQL语言具有SQL语言的语法和特性,但是它支持更多的数据类型和数据格式,例如JSON、XML等非结构化数据。
  2. 数据更新:传统关系型数据库支持多种数据更新方式,例如INSERT、UPDATE、DELETE等,而Hive的数据更新方式相对有限,通常只支持追加数据或覆盖数据。这是因为Hive的数据存储通常是以文件的形式存储,文件一旦创建就不能被修改,因此更新数据通常需要创建新的文件替换旧文件。
  3. 执行延迟:传统关系型数据库通常具有低延迟的特点,可以快速响应用户的查询请求,而Hive的查询延迟相对较高,因为它需要将数据转换为MapReduce任务并提交到Hadoop集群中执行。但是,Hive可以处理PB级别的数据,适合于大规模数据集的查询和分析,这使得它在处理大规模数据集时具有优势。
  4. 数据规模:传统关系型数据库通常适用于小规模、结构化数据的存储和查询,而Hive适用于大规模、非结构化数据的存储和查询,特别是对于需要进行大规模分布式计算的场景。传统关系型数据库的扩展性受到硬件和软件限制,而Hive可以在Hadoop集群中进行水平扩展,可以处理PB级别的数据。

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

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

相关文章

如果我们使用大字符串作为 MySQL 索引键会发生什么

背景 正如我之前的文章里所解释的那样,B树的深度决定了MySQL在仅考虑使用索引的情况下的最坏查询性能。在SSD的帮助下,拥有一个比4层更深的B树应该是可以接受的。 那么下一个问题是:性能可能有多糟糕?在这里,我有意设…

elasticsearch中文分词使用以及疑问

最近用到elasticsearch作为知识库底层搜索引擎,开发反馈中文查询有问题,所以引用ik分词解决此问题。 一、安装 根据自己的版本找到github仓库下载,我此处使用为7.9.3版本 v7.9.3 Releases medcl/elasticsearch-analysis-ik GitHub 解压到…

git pull 和push讲解:016

pull 和push大致流程:(将远程仓库同步到本地仓库)>(在本地仓库修改并提交)>(推送修改内容到远程仓库) 1. 首先创建一个文件夹, 打开Git Bash终端, cd到这个文件夹内 2. 将(远程仓库)的克隆到这个文件夹内:git clone 远程仓库…

史上最难HelloWorld

文章目录 TomcatServlet创建一个项目引入依赖创建目录编写代码打包部署验证 优化一下打包和部署-Smart TomcatServlet常见的问题 Tomcat Tomcat就是一个HTTP服务器,HTTP协议是前后端交互的桥梁,前端就是浏览器,后端就是一个HTTP服务器&#…

设计模式之~访问者模式

简述: 访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式(Vistor Pattern)是一种将数据结构与数据操作分离的的设计模式。 结构图: 实例: 示例代码&#x…

Linux系统下C语言的编程技巧

Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行…

【复习笔记】FreeRTOS(三)任务挂起和恢复

本文是FreeRTOS复习笔记的第三节,任务挂起和恢复,使用的开发板是stm32f407VET6,创建两个任务,task1负责闪烁LED,task2负责按键控制,当按键按下时控制任务挂起,按键再次按下恢复任务,…

【数据结构】经典排序法

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析2 目录 👉🏻 直接插入排序👉🏻 选择排序&…

微信支付(小程序)-java

微信支付开发者文档微信支付是腾讯公司的支付业务品牌,微信支付提供公众号支付、APP支付、扫码支付、刷卡支付等支付方式。微信支付结合微信公众账号,全面打通O2O生活消费领域,提供专业的互联网行业解决方案,微信支付支持微信红包…

访问github网络问题解决

查看wsl可用镜像列表时产生如下访问github的网络问题 C:\Users\jiangcheng> wsl --list --online 无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法与服务器建立连接 Error code: Wsl/WININET_…

hive任务reduce步骤卡在99%原因及解决

我们在写sql的时候经常发现读取数据不多,但是代码运行时间异常长的情况,这通常是发生了数据倾斜现象。数据倾斜现象本质上是因为数据中的key分布不均匀,大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均…

Vulkan Tutorial 9 模型加载Mipmaps

目录 28 加载模型 Sample mesh 加载顶点和索引 ​编辑 顶点去重 28 加载模型 我们将使用tinyobjloader库来从OBJ文件中加载顶点和面。它的速度很快,而且很容易集成,因为它是一个像stb_image一样的单文件库。将包含tiny_obj_loader.h的目录添加到Add…

ChatGPT国内镜像站

免费国内镜像推荐(超稳定) 下面为大家收集了目前国内最稳定流畅的ChatGPT镜像网站 目录 机器人 博弈ai 泰cool辣 道合顺 二狗问答 核桃 WOChat GPT中文站 TomChat 利用ChatGPTMindShow三分钟生成PPT ChatGPT国内镜像是啥 ChatGPT 镜像是指…

Xpdf 阅读器源码编译后查看文件中文乱码问题解决

经查阅,是由于缺少中文字体包: 第一步:下载所需要的字体包 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含下载中文字体包(非嵌入字体) http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp…

pytorch-简单回归问题-手写数字识别

pytorch-简单回归问题-手写数字识别 线性回归添加噪声简单例子分类问题引入-手写数字识别数据集 训练推导手写数字识别1加载数据集编写网络训练网络计算正确率 线性回归添加噪声 使用均方差损失函数来衡量损失 简单例子 通过最小化损失函数,求解出参数w b 下图表示…

封装的函数停发/启动CAN报文,以及报文接收检测,高可用

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 在测试过程中,我们可能需要可控的停/发某些报文,今天博主给…

chatgpt赋能python:Python主页面的SEO分析及优化建议

Python主页面的SEO分析及优化建议 Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域。Python官方网站是Python社区的一个重要门户,为全球学习Python的开发者提供了全面、权威、可靠的信息。在这篇文章中,我们将分析Py…

Text to image论文精读SeedSelect: 使用SeedSelect微调扩散模型It’s all about where you start

随着文本到图像扩散模型的发展,很多模型已经可以合成各种新的概念和场景。然而,它们仍然难以生成结构化、不常见的概念、组合图像。今年4月巴伊兰大学和OriginAI发表《It’s all about where you start: Text-to-image generation with seed selection》…

软件外包开发项目原型图工具

项目原型图工具有非常重要的作用,尤其是在APP项目开发中,对于整体需求的表达是必不可少的工具。相比于传统的文档需求,图形文字的表达可以更清楚的表达需求,让客户清楚的明白软件功能有哪些,最后的界面是怎样的&#x…

微信海量数据查询如何从1000ms降到100ms?

👉腾小云导读 微信的多维指标监控平台,具备自定义维度、指标的监控能力,主要服务于用户自定义监控。作为框架级监控的补充,它承载着聚合前 45亿/min、4万亿/天的数据量。当前,针对数据层的查询请求也达到了峰值 40万/m…