数字化架构与实施技术
Hadoop之hive简介(5W1H)
智扬信达
2024.08.05
Erin

1.Hive – why?

Q:为什么?hive的出现是为哪般?

A:Hive的崛起是紧跟Hadoop的,与传统关系数据库相比较,其区别为以下:

----

关系数据库里,表的加载模式是在数据加载时候强制确定的(表的加载模式是指数据库存储数据的文件格式),如果加载数据时候发现加载的数据不符合模式,关系数据库则会拒绝加载数据,这个就叫“写时模式”,写时模式会在数据加载时候对数据模式进行检查校验的操作。

----

Hive在加载数据时候和关系数据库不同,hive在加载数据时候不会对数据进行检查,也不会更改被加载的数据文件,而检查数据格式的操作是在查询操作时候执行,这种模式叫“读时模式”。

----

在实际应用中,写时模式在加载数据时候会对列进行索引,对数据进行压缩,因此加载数据的速度很慢,但是当数据加载好了,我们去查询数据的时候,速度很快。但是当我们的数据是非结构化,存储模式也是未知时候,关系数据操作这种场景就麻烦多了,这时候hive就会发挥它的优势。

----

关系数据库一个重要的特点是可以对某一行或某些行的数据进行更新、删除操作,hive不支持对某个具体行的操作,hive对数据的操作只支持覆盖原数据和追加数据。Hive也不支持事务和索引。更新、事务和索引都是关系数据库的特征,这些hive都不支持,也不打算支持,原因是hive的设计是海量数据进行处理,全数据的扫描时常态,针对某些具体数据进行操作的效率是很差的,对于更新操作,hive是通过查询将原表的数据进行转化最后存储在新表里,这和传统数据库的更新操作有很大不同。

----

Hive也可以在hadoop做实时查询上做一份自己的贡献,那就是和hbase集成,hbase可以进行快速查询,但是hbase不支持类SQL的语句,那么此时hive可以给hbase提供sql语法解析的外壳,可以用类sql语句操作hbase数据库。

Hive的设计目的是为了那些精通SQL技能的分析师们能够对存放在HDFS上的大规模数据集上进行查询。Hive在很多方面和RMDB类似,比如说它支持SQL接口;但是由于其它底层设计的原因,对HDFS和Mapreduce有很强的依赖,这也就意味这Hive的体系结构和RMDB有很大的区别。这些区别又间接的影响到Hive所支持的一些特性。

----

2.Hive – what? 

Q:是什么?Hive到底是什么呢?

A:Hive 是一个基于 Hadoop 的开源数据仓库工具。

其可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换MapReduce任务进行运行,用于存储和处理海量结构化数据。   

Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作 

----

----

hadoop和mapreduce是hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),主要为两大类:服务端组件和客户端组件。

服务端:

Driver组件:该组件包括Complier、Optimizer和Executor,它的作用是将我们写的HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的mapreduce计算框架。

Metastore组件:元数据服务组件,这个组件存储hive的元数据,hive的元数据存储在关系数据库里,hive支持的关系数据库有derby、mysql。元数据对于hive十分重要,因此hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦hive服务和metastore服务,保证hive运行的健壮性。

Thrift服务:thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。

客户端:

CLI:command line interface,命令行接口。

Thrift客户端:上面的架构图里没有写上Thrift客户端,但是hive架构的许多客户端接口是建立在thrift客户端之上,包括JDBC和ODBC接口。

WEBGUI:hive客户端提供了一种通过网页的方式访问hive所提供的服务。这个接口对应hive的hwi组件(hive web interface),使用前要启动hwi服务。

----

3.Hive – who? 

Q:谁?谁和hive交往神秘?

A:我们强大的Hadoop生态圈。

----

----

合并范围包含合并特性、合并角度(法定合并)及合并方法的定义。不同的合并范围可以具有不同的合并特性、合并角度和合并方法。

以下从两个角度介绍合并范围的意义。

从合并准则上讲,对于跨国集团,其在多国有子公司,不同国家的会计准则不同,所以这些子公司的财务处理是遵循各自所在国家的准则。为了实现这种复杂合并,我们可以为不同的会计准则设定不同的合并范围。 从合并角度上讲,集团要按国家要求出具合并财务报表,这些报表是法定报表,其合并是为了出具用于上报的财务报表;而从管理的角度,出具集团领导关注的能满足管理需求的报表,这种合并是管理合并。以下用一个例子说明管理合并的用途。

比如一个公司有煤矿厂A,洗煤厂B,焦化厂C。A生产的煤会销售给B进行选煤洗煤,生产出精煤和混煤;B的精煤会销售给C进行焦化,焦化后生产出焦炭。这种一个公司间存在不同的业务,可以将ABC设为三个利润中心,每个利润中心设为一个合并单元,参与合并。

----

4. Hive – when and where? 

Q:什么时候?在哪里?hive大展身手通常是什么时候?

A:hive会把语句转换成MapReduce,然后交给hadoop执行。

底层:存储层,文件系统HDFS,NoSQL Hbase

中间层:资源及数据管理层,YARN以及Sentry等

上层:MapReduce、Impala、Spark等计算引擎

顶层:基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout

hive适用于离线数据的分析,操作的是通用格式的(如通用的日志文件)、被hadoop管理的数据文件,它支持类sql,比编写MapReduce的Java代码来的更加方便,它的定位是数据仓库,存储和分析历史数据。

----

5.  Hive – how? 

Q:hive到底怎么用?

A:多动手多实践。找度娘、找谷爹。

找几篇优秀的博文参照着练习实践下。

---

自主产品
关于智扬

公司简介

400-118-3070

jointstarc@com

事前事中事后深度指导企业经营管理
助力企业可持续发展