【Hive是什么?】Hadoop和Hive是什么关系?Hive在Hadoop上是怎么运行的?用大白话理解Hive和Hadoop的关系。

大家好,我是摇光~

最近在学习Hadoop的时候,学习了Hadoop、HDFS、MapReduce是什么,也懂得了Hadoop大概能为我们做什么,还有小伙伴不懂Hadoop的可以看这篇文章:
大白话理解Hadoop是什么?

众所周知,Hadoop是使用 Java 开发的,但是我们在工作的时候,经常不会直接写java程序去进行数据存储和数据计算,通常是使用Hive、HBase等软件;那Hive、HBase和Hadoop是什么关系呢,接下来我们来讲下为什么~

一、Hive是什么?

接下来我们也是用几个问题来了解到 Hive

1、Hive是什么?

Apache Hive 是一款建立在 Hadoop 之上的开源数据仓库系统。

  • 数据仓库(DW):是一个集中存储大量数据的系统,这些数据经过数据集成、清洗、转换并存储,以便查询和分析。

上面解释了Hive是建立在Hadoop之上的,我们就知道Hadoop和Hive肯定是有一定关系的。那他们有什么关系呢?

2、Hive和Hadoop有什么关系?

其实Hive可以将存储在 Hadoop 文件中的结构化、半结构化数据文件(其实就是 HDFS 的文件)转成表,然后进行类SQL(类SQL是 HQL)查询,再将类SQL转成MapReduce程序,将程序提交到 Hadoop集群中执行。

通过上面的解释,是不是就很清楚了,其实Hive就是一个壳子罢了,Hive利用HDFS存储数据,利用MapReduce查询分析数据

那我们肯定就会问,为什么不直接使用 HDFS和MapReduce,还需要去使用Hive?

3、为什么要使用Hive?

  • 1、因为MapReduce是使用Java开发,如果采用 Java 计算,人员的学习成本高,而且MapReduce实现查询逻辑开发难度大。
  • 2、Hive采用HQL语法,容易上手,减少开发人员学习成本;并且支持自定义函数,功能扩展很方便。
  • 3、Hive依靠Hadoop,即满足存储,又满足计算,可以处理海量的数据

其实总结下来,Hive的最大优点就是能够让用户编写 HQL,简单、方便。


二、Hive是怎么工作的?

从刚刚的几个问题,我们应该都了解到 Hive 是什么了,那我们接下来了解一下Hive到底是怎么工作的。

我们先看一下 Hive 的架构图。

我们来逐个解析这张图,你就会明白 Hive 是如何工作的了~

用户接口

这里列举了三个接口,CLI,Thrift、Web;其实这些接口都是为了让用户能够连接到 Hive,直白的说,就是用户可以写HQL来连接到 Hive ,让 Hive 进行工作。
Hive Driver 驱动程序

这一部分就是 Hive 的核心,其实很好理解,就是对用户所写的 HQL 进行语法解析,计划编译,优化、执行。这一套下来就会生成一个查询计划,这些查询计划存储在 HDFS 中,之后执行引擎调用执行。

Hive 的核心也就是把 HQL 转成 MapReduce 进行计算。
元数据存储

很多人肯定会问,什么是元数据;元数据其实很好理解,Hive 写的HQL 是针对表的操作,但是表里的数据是 HDFS 的文件,那这两个是怎么联系起来的呢?

  • 其实这就是元数据的功劳,元数据存放的是Hive里的表和HDFS文件的映射关系。比如Hive中哪个表对应哪个文件,这个表的哪个字段对应HDFS的哪些数据,HDFS的数据分割符是什么。

应该大家都懂得了元数据是什么了吧,所以元数据存储,存放的是表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。(注:通常是存储在关系数据库如 mysql/derby 中)
执行引擎

执行引擎也就是进行数据计算;这里列举了三种,MapReduce、Spark、Tez,Hive可以对接很多引擎进行计算,因为MapReduce虽然很早就使用了,但是他计算的速度其实很慢,而Spark这些内存计算引擎就会比较快。

根据上面对图片的解释,大家应该就懂得 Hive 是怎样运作的;我们来一句话总结一下。

Hive其实就是可以写 HQL,然后通过Hive驱动程序将HQL转成 MR(MapReduce)语言,再使用元数据进行数据映射找到HDFS文件,再数据进行数据分析。


三、元数据

在上面其实我们已经解释过 元数据 是什么,但是元数据是很重要的一部分,我们再来理解一下元数据。

  • 元数据(Metadata) :又称中介数据,是描述数据的数据,主要描述数据属性的信息。
  • Hive Metadata :就是 Hive 的元数据,包含Hive创建的database、table、表的位置、类型、属性,字段顺序等元信息。

这里需要注意的是,Hive里计算的数据是来自 HDFS ,但是元数据是存储在关系型数据库中。如存储在 hive内置的Derby、或者第三方Mysql等。

有了元数据之后,肯定需要进行元数据的管理,并且也要保证元数据的安全,所以接下来我们要了解一个概念,Hive Metastore。

Hive Metastore:元数据服务,作用是 管理metadata 元数据,对外暴露服务地址,让客户端通过连接 metastore 服务,再由 metastore 去连接 MySQL 数据库来存取元数据。

  • 有了metastore服务,就可以多个客户端同时连接,而且客户端也不需要知道 MySQL 的用户名和密码,保证了hive元数据的安全。

从上图应该就很清楚知道 metastore和metadata的关系了~

metastore有三种配置方式,可以根据所需选择自己的方式。

其实在企业中,我们经常使用的是远程模式,使用这个模式,其他依赖hive的软件都可以通过Metastore访问hive。更安全更好的管理了hive元数据。

下面是远程模式的架构图,可以看出 Hive 有两个客户端。

  • 第一代客户端(Hive old Client):$HIVE_HOME/bin/hive,是一个shellUtil。主要功能是用于交互或批处理模式运行Hive查询和Hive相关服务的启动。
  • 第二代客户端(Hive new Client):$HIVE_HOME/bin/beeline,是一个JDBC客户端,官方推荐使用的Hive命令行工具,比第一代更强更安全。

注意,第二代客户端需要启动 Metastore和HiveServer2 两个服务才可以。


以上就是Hive跟Hadoop的关系,如果大家还有什么不懂的,可以评论告诉我哦~

最近我都会写一些关于大数据相关的文章,都是一些简单易理解的大白话文,希望大家喜欢~

相关推荐
计艺回忆路16 分钟前
Hive自定义函数(UDF)开发和应用流程
hive·自定义函数·udf
万能小锦鲤14 小时前
《大数据技术原理与应用》实验报告三 熟悉HBase常用操作
java·hadoop·eclipse·hbase·shell·vmware·实验报告
天翼云开发者社区20 小时前
数据治理的长效机制
大数据·数据仓库
王小王-1231 天前
基于Hadoop与LightFM的美妆推荐系统设计与实现
大数据·hive·hadoop·大数据美妆推荐系统·美妆商品用户行为·美妆电商
一切顺势而行1 天前
hadoop 集群问题处理
大数据·hadoop·分布式
万能小锦鲤2 天前
《大数据技术原理与应用》实验报告七 熟悉 Spark 初级编程实践
hive·hadoop·ubuntu·flink·spark·vmware·实验报告
项目題供诗2 天前
Hadoop(二)
大数据·hadoop·分布式
Leo.yuan2 天前
ETL还是ELT,大数据处理怎么选更靠谱?
大数据·数据库·数据仓库·信息可视化·etl
万能小锦鲤2 天前
《大数据技术原理与应用》实验报告五 熟悉 Hive 的基本操作
hive·hadoop·ubuntu·eclipse·vmware·实验报告·hiveql
張萠飛2 天前
flink sql如何对hive string类型的时间戳进行排序
hive·sql·flink