6.1数据仓库概念
6.1.1什么是数据仓库
数据仓库:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
数据仓库的目的:支持企业内部的商业分析和决策,让企业可以基于数据仓库的分析结果作出相关的经营决策。
数据仓库的典型体系结构:
数据仓库的数据都来自数据源,数据源中的数据需要经过抽取、转换、加载(ETL过程),再进入数据仓库。接着可以通过OLAP服务器和数据挖掘引擎,对上层应用提供服务,从而提供各种类型的服务。
数据仓库是相对稳定的,仓库中的数据不会频繁变化甚至根本不会变化。大部分情况下,数据源中的数据经过ETL过程进入数据仓库后就不会再发生变更,基本保留了历史上所有时刻的状态(大量历史数据可以被用于多维数据OLAP分析,找出企业经营管理规律)。但传统数据库只能存储在某个时刻的状态,原来的历史信息不保留。
传统数据仓库面临的挑战:
1.无法满足快速增长的海量数据存储需求。
2.无法有效处理不同类型的数据。
基于传统数据库构建,只能存储结构化数据。
3.计算和处理能力不足。
没有办法横向扩展,纵向扩展的能力也是有限的。
6.2Hive简介
6.2.1概述
Hive是一个构建于Hadoop顶层的数据仓库工具,支持大规模数据存储分析。由于Hadoop是大数据处理架构、分布式处理架构,具有非常好的水平可扩展性,所以构建在其上的Hive也有很好的水平可扩展性。
虽然Hive是数据仓库工具,但是它和传统的数据仓库是有区别的。
传统的数据仓库即是数据存储产品也是数据分析处理产品,能同时支持数据的存储和处理分析。然而,Hive本身并不支持数据存储和处理,应该将它看作一个面向用户的接口,相当于给用户提供了一种编程语言。让用户可以用类似SQL的编程语言去编写分析需求。
Hive架构在底层的Hadoop核心组件之上,而Hadoop平台有支持大规模数据存储的组件HDFS、支持大规模数据处理的组件MapReduce。Hive正是借助于这两个组件完成数据的存储和处理。具体来说,Hive依赖分布式文件系统HDFS存储数据、依赖分布式并行计算模型MapReduce处理分析数据。
Hive为用户提供了一种非常简单的查询语言,和SQL非常类似(借鉴SQL语言),即新的查询语言HiveQL。
用户可以通过HiveQL这种语句,执行具体的MapReduce任务。
并且,Hive支持类似SQL的接口,很容易进行移植。可以很容易的把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop平台上。
因此,Hive是一个可以提供有效合理直观组织和使用数据的分析工具。
Hive两个方面的特性
1.采用批处理方式处理海量数据
Hive本身并不负责数据的处理分析,会把用户提交的HiveQL语句转换成一系列的MapReduce任务执行。而MapReduce是典型的面相批处理的框架。
数据仓库存储的是静态数据,不会发生频繁变化甚至根本不会变化。所以对静态数据的分析适合采用批处理方式,不需要快速响应给出结果。数据仓库的这种静态特性很适合使用Hive。
2.Hive提供了一系列对数据进行提取、转换,加载(ETL)的工具
可以存储、查询和分析存储在Hadoop中的大规模数据,这些工具可以很好的满足数据仓库的各种应用场景。
6.2.2Hive和Hadoop生态系统中各组件关系
Hive建立在Hadoop平台之上,依赖HDFS存储数据,依赖MapReduce处理数据。
Pig是一种面向流式处理的语言,类似于SQL语句,可以通过编写Pig Latin脚本语言以使用数据仓库和数据分析的工作,无需编写复杂代码。在某种程度上,Pig和Hive提供的数据仓库的功能是类似的,也是让用户输入类似SQL的语句,也会把语句转换为MapReduce任务运行。但是二者也存在区别,相对于Hive来说,Pig是