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级别的数据。

1.Hive系列之简介相关推荐

  1. beeline安装_Hive 系列 之 简介与安装

    下面是系列文章的目录 (1)hive系列之简介,安装,beeline和hiveserver2 (2)hive系列之基本操作 (3)hive系列之udf (4)hive系列之二级分区和动态分区 (5)h ...

  2. BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略

    BigData之Hive:Hive数据管理的简介.下载.案例应用之详细攻略 目录 Hive数据管理的简介 1.Hive的适用场景--不适合那些需要高实性的应用(不能够在大规模数据集上实现低延迟快速的查 ...

  3. Hive系列(一)metastore的认证和授权

    2019独角兽企业重金招聘Python工程师标准>>> 1 Hive系列目录 Metastore认证和验权 HiveServer2认证和验权 sentry的权限设计 HiveServ ...

  4. 【Proteus+51单片机学习笔记】-51/52系列单片机简介

    0 摘要 本文主要对STC89C52系列单片机进行了简单介绍,对其主要电路进行整理. 1 STC89C52系列单片机简介 STC89C52单片机指令完全兼容传统8051单片机,包括12T和6T两种模式 ...

  5. UUCP系列程序简介

    UUCP系列程序简介 1.UUCP系统概述 UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情况的统计,保护安全.UUCP是UNIX系统最广泛使用的网络实用系统,这其中在两个原因 ...

  6. 目标检测YOLO系列------YOLO简介

    目标检测YOLO系列------YOLO简介 1.为什么会出现YOLO算法 2.YOLO算法会逐渐成为目标检测的主流吗     YOLO以及各种变体已经广泛应用于目标检测算法所涉及到的方方面面,为了梳 ...

  7. Hive系列 (一):Hive搭建

    文章目录 Hive系列文章 一.环境信息 二.hive下载安装 三.mysql下载安装及配置 四.Hive配置 五.启动服务 六.beeline配置 七.beeline一键启动脚本 八.注意事项 Hi ...

  8. Lattice系列FPGA入门相关1(Lattice系列FPGA简介)

    需求说明:Lattice系统FPGA入门 内容       :Lattice系列FPGA简介 来自       :时间的诗 1.为什么Lattice在进入FPGA市场的第一年就能取得这么好的成绩? 我 ...

  9. 第三讲 i.MX系列芯片简介

    第三讲 i.MX系列芯片简介 文章目录 第三讲 i.MX系列芯片简介 一. i.MX 系列处理器 芯片选型 i.MX 6ULL 总览 i.MX 6ULL 特性 i.MX 6ULL 框图 注意 二. A ...

最新文章

  1. Common Lisp 操作Mysql
  2. Oracle数据库案例整理-Oracle系统执行时故障-Shared Pool内存不足导致数据库响应缓慢...
  3. 鼠标固定在屏幕中间_无线电竞黑科技,雷柏VT950Q游戏鼠标评测
  4. Nginx windows安装部署
  5. java集合进行排序的两种方式
  6. 总结|数学建模的收获
  7. 华为eNSP-动态路由实验
  8. 网络计算机信号属于什么信号,数字信号
  9. java扫码枪键盘_JAVA读取USB扫描枪
  10. 数字后端概念——Wire Shape
  11. python猜拳游戏编程代码_Python实现猜拳小游戏
  12. Sklearn实现普通最小二乘法
  13. 从CPU架构--x86架构和arm架构处理器--功耗
  14. 进销存系统中的多计量单位
  15. C#【必备技能篇】Hex文件转bin文件的代码实现
  16. 面试集锦之计算机操作系统
  17. CSDN创始人蒋涛:“重应用轻生态”的AI开源模式非长久之计
  18. Jenkins连接AWS-EKS
  19. 我的世界java我的世界启动侠_我的世界启动侠
  20. 微信小程序---人脸识别(WX.STARTFACIALRECOGNITIONVERIFY)

热门文章

  1. python基于PHP+MySQL的汽车维修管理系统
  2. 鼠标移入(动态)修改svg图标颜色
  3. 计算机在未关机的情况下重启,系统已在未先正常关机的情况下重新启动。游戏就断电重启。...
  4. Python+PyQt5+Requests+Selenium写一个在线音乐播放器
  5. docker学习笔记(初阶)
  6. 程序员大神,C++编程制作不一样的五子棋小游戏
  7. video poster海报撑满容器方法
  8. Python入门习题大全——电影票
  9. iphone6 plus
  10. 使用JavaScript实现10秒倒计时