5、Hive 数据仓库技术

一、Hive 概念

Hive 是基于 Hadoop 的数据仓库软件,可以查询和管理 PB 级别的分布式数据。数据仓库已用多种方式定义,很难给出一种严格的定义。宽泛来讲,数据仓库是一种数据库,他与单位的操作数据库分别维护。数据仓库系统允许将各种应用系统集成在一起,为统一的历史数据分析提供坚实的平台,对信息处理提供支持。数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合,支持管理者的决策过程。

面向主题的:数据仓库围绕一些重要主题,如顾客、供应商、产品和销售组织等。数据仓库关注决策者的数据建模与分析,而不是单位的日常操作和事务处理。因此,数据仓库通常排除对于决策无用的数据,提供特定主题的简明视图。

集成的:通常,构造数据仓库是将多个异构数据源,如关系型数据库、一般文件和联机事务处理记录集成在一起。使用数据清理和数据集成技术,确保命名约定、编码结构、属性度量等的一致性。

时变的:数据存储从历史的角度提供信息。数据仓库中的关键结构都隐式或显式的包含时间元素。

非易失的:数据仓库总是物理的分离存放数据,这些数据源于操作环境下的应用数据。由于这种分离,数据仓库不需要事务处理、恢复和并发控制机制。通常,他只需要两种数据访问操作:数据的初始化装入和数据访问。

相比于传统数据库,数据仓库可以提供对于异构多源数据库的支持,他更关注的是哪些数据是挖掘需要的,这些数据都是显隐或带有时间属性的,而且基于 Hadoop 理论,他们都认为硬件是不可靠的

 

Hive 是构建在 Hadoop 上的数据仓库软件框架,支持使用 SQL 来读,写和管理大规模数据集合。Hive 入门非常简单,功能非常强大,所以非常流行.通常来说,Hive 只支持数据查询和加载,但后面的版本也支持了插入,更新和删除以及流式 api。Hive 具有目前 Hadoop 上最丰富最全的 SQL 语法,也拥有最慢最稳定的执行。是目前 Hadoop 上几乎标准的 ETL 和数据仓库工具。Hive 这个特点与其它 AdHoc 查询工具如 Impala,Spark SQL 或者 Presto 有着应用场景的区别,也就是虽然都是即席查询工具,前者适用与稳定作业执行,调度以及 ETL,或者更倾向于交户式。一个典型的场景是分析师使用 Impala 去探测数据,验证想法,并把数据产品部署在 Hive 上执行。在我们讲 Hive 原理和查询优化前,让我们先回顾一下 Hadoop 基本原理。

 

Hadoop 是一个分布式系统,有 HDFS 和 Yarn。HDFS 用于执行存储,Yarn 用于资源调度和计算。MapReduce 是跑在 Yarn 上的一种计算作业,此外还有 Spark 等。 Hive 通常意义上来说,是把一个 SQL 转化成一个分布式作业,如 MapReduce, Spark 或者 Tez。无论 Hive 的底层执行框架是 MapReduce、Spark 还是 Tez,其原理基本都类似。而目前,由于 MapReduce 稳定,容错性好,大量数据情况下使用磁盘,能处理的数据量大,所以目前 Hive 的主流执行框架是 MapReduce,但性能相比 Spark 和 Tez 也就较低,等下讲到 Group By 和 JOIN 原理时会解释这方面的原因。目前的 Hive 除了支持在 MapReduce 上执行,还支持在 Spark 和 Tez 上执行。我们以 MapReduce 为例来说明的 Hive 的原理。先回顾一下 MapReduce 原理。

两个 Mapper 各自输入一块数据,由键值对构成,对它进行加工(加上了个字符n),然后按加工后的数据的键进行分组,相同的键到相同的机器。这样的话,第一台机器分到了键 nk1 和 nk3,第二台机器分到了键 nk2。接下来再在这些 Reducers 上执行聚合操作(这里执行的是是 count),输出就是 nk1 出现了 2 次,nk3 出现了 1 次,nk2 出现了 3 次。从全局上来看,MapReduce 就是一个分布式的 GroupBy 的过程。从上图可以看到,Global Shuffle 左边,两台机器执行的是 Map。Global Shuffle 右边,两台机器执行的是 Reduce。所以 Hive,实际上就是一个编译器,一个翻译机。把

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值