【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的关系,如果大家还有什么不懂的,可以评论告诉我哦~

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

相关推荐
admin_2334 小时前
hue 4.11容器化部署,已结合Hive与Hadoop
数据仓库·hive·hadoop
Francek Chen9 小时前
【大数据分析&深度学习】在Hadoop上实现分布式深度学习
人工智能·hadoop·分布式·深度学习·数据分析
isNotNullX12 小时前
一文解读数据仓库的分层逻辑和原理
大数据·数据仓库·spark
青云交19 小时前
大数据新视界 -- Impala 性能优化:量子计算启发下的数据加密与性能平衡(下)(30 / 30)
大数据·hive·量子计算·数据加密·impala·量子密钥分发·性能平衡
Java 第一深情1 天前
详细教程-Linux上安装单机版的Hadoop
linux·运维·hadoop
Light601 天前
ETL领域的创新突破:低代码平台的变革引擎
数据仓库·低代码·etl
cclovezbf1 天前
hive的cascade使用解释
数据仓库·hive·hadoop
油头少年_w1 天前
Hadoop进阶原理(HDFS、MR、YARN的原理)
大数据·hadoop·分布式
zmd-zk1 天前
flink学习(6)——自定义source和kafka
大数据·hadoop·学习·flink·kafka·实时