Hadoop应用实战
上QQ阅读APP看书,第一时间看更新

1.4 数据仓库

数据仓库(Data Warehouse),顾名思义,是一个数据的仓库。而作为仓库,就一定有存放、组织、归类货物和准备货物的功能。所以数据仓库其实就是一个存放、组织、归类数据,并把数据准备好提供给客户使用的地方。

目前企业级的数据库和应用往往都建立在传统的关系型数据库上,然而面对动辄上亿以至百亿条数据的查询分析,传统方式越来越力不从心。

数据仓库是Hadoop的一个重要应用领域,所以我们在后面专门讲述Hadoop和数据仓库,如图1-11所示。

图1-11 数据仓库架构

1.4.1 数据仓库是解决大数据存储的基础设施

在大数据的场景下,数据存储是首先需要解决的问题。著名的数据仓库专家W.H. Inmon曾给出如下的概念描述:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。

对于Inmon提出的数据仓库的概念,我们可以从两个层次予以理解。

(1)数据仓库主要用于支持决策,面向分析型数据处理,它不同于普通企业今天现有的操作型数据库。

(2)数据仓库可以对多个异构的数据源有效集成,集成后按照主题进行重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。

数据仓库系统是一个信息整合平台,从业务处理系统上获得数据,通常以星形模型或雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息和知识。

在面向海量数据的应用系统中,数据仓库是不可或缺的基础设施。

图1-12所示的数据的流程大概是这样的:

图1-12 数据仓库概念

(1)我们所需要的数据可能来自很多不同的数据源(Sources);

(2)经过提取之后,数据进入工作台(Staging);

(3)数据在经过清洗之后进入可操作的数据存储(Operational data store);

(4)经过转换的数据才最终进入数据仓库中;

(5)数据的呈现方式可能是可视化报告或者其他。

Gartner对于数据仓库的解释是:数据仓库不仅是个单一的数据库,它是整套的数据管理系统,包含很多的辅助工具、一些设计理念和管理方法等。

1.4.2 4种不同类型的数据仓库

根据企业构建数据仓库的主要应用场景不同,可以将数据仓库分为以下4种类型,每一种类型的数据仓库系统都有不同的技术指标与要求。

1.传统数据仓库

企业中需要处理的数据可以简单分成内部数据和外部数据,内部数据通常也分为两类。

(1)OLTP(On-Line Transaction Processing)交易系统上的数据联机事务处理系统,也称为面向交易的处理系统。

(2)OLAP(On-Line Analytical Processing)分析系统上的数据,联机分析处理。

企业会把这些数据全部集中起来,经过转换放到数据库中,这些数据库通常是Teradata、Oracle、DB2等传统数据库。然后在这上面进行数据加工,建立各种主题模型,再提供报表分析业务。一般来说,数据的处理和加工是通过离线的批处理来完成的,通过各种应用模型实现具体的报表加工。

2.实时处理数据仓库

随着业务的发展,一些企业客户需要对实时的数据做商业分析,比如零售行业需要根据实时的销售数据来调整库存和生产计划,风电企业需要通过处理实时的传感器数据来排查故障以保障电力的生产等。

这类行业用户对数据的实时性要求很高,传统的离线批处理方式不能满足其需求,因此他们需要构建实时处理的数据仓库。数据可以通过各种方式完成采集,然后数据仓库可以在指定的时间窗口内进行数据处理、事件触发和统计分析等工作,再将数据存入数据仓库以满足其他业务的需求。

因此,实时数据仓库增强了对实时性数据的处理能力,也要求系统的架构在技术层面上需要一个革命性的调整。

3.关联发现数据仓库

在大部分场景下,企业都不知道数据的内部关联规则,而需要通过数据挖掘的方式找出数据之间的关联关系、隐藏的联系和模式等,从而挖掘出数据的价值。

很多行业的新业务都有这方面的需求,如金融行业的风险控制、反欺诈等业务。上下文无关联的数据仓库一般需要在架构设计上支持数据挖掘能力,并提供通用的算法接口来操作数据。

4.数据集市

数据集市一般是满足某一类功能需求的数据仓库的简单模式,往往由一些业务部门构建,也可以构建在企业数据仓库上。一般来说,数据集市数据源比较少,但往往对数据分析的延时有很高的要求,并需要和各种报表工具有很好的对接。

1.4.3 国内外数据仓库的不同使用方式

我们来看一些统计数据:

图1-13中的数据是Wikibon的分析师在美国市场对Hadoop新技术的应用场景所作的统计。他们采访了上千名Hadoop的用户,其中有60%的用户使用Hadoop技术来作数据仓库,有25%的用户是按照交互式BI在Hadoop之上用报表工具、可视化工具来作交互式分析数据报表。同时有6%的用户在用HBase、Cassandra数据库做OLAP的简单轻量级Key-Value查询;有4%的用户使用MongoDB、CoucHBase等文档式数据库进行文档存储;还有5%的用户使用流处理来作实时数据研判,由此构成一个完整的100%的应用分类。当然这里不排除可能还有一些其他的应用被漏掉了。

图1-13 国外数据仓库使用图

图1-14是星环科技对中国市场几百个企业用户使用Hadoop新技术的情况进行的统计。从这个统计数据中可以发现,中国市场与美国市场还是有些差异的。分析结果显示,有56%的客户采用Hadoop作数据仓库,比如用于取代关系型数据库来提供完整的数据仓库支持,来建构各种主题模型的数据仓库等,这个数字也包括了单纯用于ODSODS是Operational Data Store的首字母缩写,操作数据存储。、ETLETL是Extract Transform Load的首字母缩写,是指数据的提取、转换、加载,是数据仓库领域的常用术语。和数据清洗的数据仓库应用。而在中国只有8%的用户在做交互式BI,且自主BI这一块在国内也刚开始兴起。

图1-14 国内数据仓库使用图

中国市场和美国市场相比,最显著不一样的地方是中国有24%的客户用Hadoop来作轻量级查询。图中的百分比指的是客户数量占比而并没有按照客户集群规模(构成的集群节点数量)的权重来进行计算。这个有趣的现象说明,实际上Hadoop在中国的应用还是相对比较简单。

而据我们的调研发现,中国Hadoop整体客户的数据量跟美国同类型客户的数据量相比要大一个数量级(10倍左右)。因为简单的查询对中国的客户来说是有巨大的困难的,所以我们可以看到有24%的客户在用Hyperbase(HBase)组件作简单查询,还有2%的客户在采用Hadoop产品进行文档的搜索和图检索。另外还有个很大的不同在于,有10%的用户在用Hadoop作流处理。从图中我们还可以发现,我国制造业传感器的网络建设速度要比美国快,我们在这个领域的用户群比例明显超过了美国相应的市场比例。