Hive起源于Facebook,Facebook公司有着大量的日志数据,而Hadoop是实现了MapReduce模式开源的分布式并行计算的框架,可轻松处理大规模数据。然而MapReduce程序对熟悉Java语言的工程师来说容易开发,但对于其他语言使用者则难度较大。因此Facebook开发团队想设计一种使用SQL语言对日志数据查询分析的工具,而Hive就诞生于此,只要懂SQL语言,就能够胜任大数据分析方面的工作,还节省了开发人员的学习成本。

什么是数据仓库

数据仓库是一个面向主题的、集成的、随时间变化的,但信息本身相对稳定的数据集合,它用于支持企业或组织的决策分析处理,这里对数据仓库的定义,指出了数据仓库的三个特点。

hadoop数据仓库成本 hadoop的数据仓库_hadoop数据仓库成本

数据仓库的结构

 数据仓库的结构是由数据源、数据存储及管理、OLAP服务器和前端工具四个部分组成。         

hadoop数据仓库成本 hadoop的数据仓库_Hive_02

 1.数据源

数据源是数据仓库的基础,即系统的数据来源,通常包含企业的各种内部信息和外部信息。

2.数据存储及管理

数据存储及管理是整个数据仓库的核心,决定了对外部数据的表现形式,针对系统现有的数据,进行抽取、清理并有效集成,再按照主题进行组织。

3.OLAP服务器

OLAP服务器对需要分析的数据按多维数据模型进行重组,以支持用户随时进行多角度、多层次的分析,并发现数据规律和趋势。

4.前端工具

前端工具主要包含各种数据分析工具、报表工具、查询工具、数据挖掘工具以及各种基于数据仓库或数据集市开发的应用。

数据仓库的数据模型

   数据模型(Data Model)是数据特征的抽象,在数据仓库建设中,一般围绕星型模型和雪花模型来设计数据模型。星型模型是以一个事实表和一组维度表组合而成,并以事实表为中心,所有维度表直接与事实表相连。

hadoop数据仓库成本 hadoop的数据仓库_大数据_03

雪花模型是当有一个或多个维表没有直接连到事实表上,而是通过其他维表连到事实表上,其图解像多个雪花连在一起,故称雪花模型。雪花模型是对星型模型的扩展,原有的各维表可被扩展为小的事实表,形成一些局部的 "层次 " 区域,被分解的表都连主维度表而不是事实表。

hadoop数据仓库成本 hadoop的数据仓库_数据仓库_04

关于Hive

Hive是建立在Hadoop文件系统上的数据仓库,它提供了一系列工具,能够对存储在HDFS中的数据进行数据提取、转换和加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的工具。Hive定义简单的类SQL查询语言(即HQL),可以将结构化的数据文件映射为一张数据表,允许熟悉SQL的用户查询数据,允许熟悉MapReduce的开发者开发mapper和reducer来处理复杂的分析工作,与MapReduce相比较,Hive更具有优势。

 Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处,MySQL与Hive对比如下所示。

hadoop数据仓库成本 hadoop的数据仓库_数据仓库_05

关于Hive系统框架

Hive是底层封装了Hadoop的数据仓库处理工具,运行在Hadoop基础上,其系统架构组成主要包含4部分,分别是用户接口、跨语言服务、底层驱动引擎及元数据存储系统。

hadoop数据仓库成本 hadoop的数据仓库_大数据_06

关于Hive的工作原理

Hive建立在Hadoop系统之上,因此Hive底层工作依赖于Hadoop服务,Hive底层工作原理如下所示。

hadoop数据仓库成本 hadoop的数据仓库_大数据_07

关于Hive数据模型

 Hive中所有的数据都存储在HDFS中,它包含数据库(Database)、表(Table)、分区表(Partition)和桶表(Bucket)四种数据类型。

hadoop数据仓库成本 hadoop的数据仓库_hive_08

 

数据库(Database):相当于关系数据库中的命名空间,作用是将用户和对数据库的应用隔离到不同的数据库或者模式中。

表(Table):内部表和外部表;数据仓库、HDFS

分区表(Partition):分区列,加快查询速度

桶表(Bucket):Hive数据模型的最小单元