11

大数据对架构的影响

t1

这是本书中大家最期待的一部分——技术讨论。正如你可以猜到的,关于技术的讨论之所以放在本书的结尾,其中一个原因是只有当你对技术讨论围绕的业务驱动和选定的业务方案有了预先的了解之后,关于技术的讨论才是富有成效的。组织之所以想要讨论技术,是因为相比于花时间去了解一个组织正尝试利用技术处理什么业务挑战或业务机遇,讨论技术的一般特点和功能要简单得多。就像通常在这个行业,我们总是寻找“良方”。

本章将简要介绍几种新的大数据技术并提供推荐读物,如果你想要进一步了解技术——有充足的、免费的优质资源是关于新的大数据技术的。本章的其余内容集中探索大数据的架构分支,特别是那些已经大量投资数据仓库和商业智能功能的组织。正如在大数据业务成熟度索引的第一阶段中谈到的,那些组织已经建立的数据仓库和商业智能功能的业务流程是开始大数据之旅的绝佳起点。

建立新的数据架构

在过去的15~20年,组织运营的数据架构是建立在以OLTP(联机交易处理)为主的关系数据库技术上的。这套架构在批量处理GB级和低TB级结构型数据时是适用的,业务用户也习惯了用周或月来衡量数据请求的回复时间。但是商业智能工具并不智能,也极少有预测性分析和数据挖掘功能。从回顾性的业务视角来监控业绩的报告和仪表盘代表了当时技术发展的水平(如图11–1所示):

• 面向批量的、高延迟性。

• 单片的、固定的层。

• 脆弱的、劳动密集型(元数据存放区)。

• 专注于结构型数据。

• 性能和拓展性受到挑战。

• 信息整合要求重要的手动编码。

• 数据在具体的报告中以汇总表的形式存储。

061

图11–1 传统的数据仓库/商业智能的参考体系结构

但是,我们现在都知道像谷歌、雅虎和脸谱网这样的互联网公司无法运作这套架构。它们在传统的数据和商业智能供应商处探索研究传统的数据管理和分析工具,但是即使利用它们的软件内核进行动态修补,以适应对数以百计的TB级和PB级数据的实时分析也不奏效——当然也不规模化。即使传统的数据供应商可以运作这套架构,与授权模式相关的成本也会逐渐蚕食那些以网站访问量和广告收入为赢利驱动的公司。

因此,新一代的数据管理和分析功能应运而生,这些功能很多是以开源项目的形式开发的,这使得所有灵活创新的公司的开发者可以比任何一家单独的供应商更迅速地更新并加强这种数据管理和分析工具的功能。这种新生代公司的需求带来了水平扩展的数据和分析架构,以及新的专用软件的过量开发(如图11–2所示)。

062

图11–2 现代的、水平扩展的大数据架构

新的大数据技术

这些大数据技术可能通过新的功能和体系结构方法显著地重新激活现有的数据仓库和商业智能投资。组织有机会利用以下大数据的功能来拓展现有的数据仓库和商业智能环境:

• 以最低的粒度实现大容量的(数以百计的TB级和PB级数据)结构化事务性数据(例如销售额、订单、销售终端事务、具体呼叫记录和信用卡事务)的存储、访问和分析。

• 半结构化数据(例如网站日志、传感器、全球定位系统和遥测数据)和非结构化数据(例如文本、消费者评价、文件和维护日志)的整合,在现有的数据仓库、商业智能报告和仪表盘中添加新的维度、维度属性和指标。

• 实时的数据源和分析环境,用来捕捉、分析、标识当数据进入你的组织时存在的异常情况,并对此采取行动。

• 能够生成评分、预测、倾向和推荐的预测性分析,可以将这些整合进你的关键业务运营系统(例如财务系统、呼叫中心系统、销售系统、采购系统、营销系统和其他运营系统)和管理系统(例如警报、报告和仪表盘)。

很多组织有转型成为“实时的、预测型”企业的目标。以上这些突出的功能是转变的主要推动力。它们可以将你的组织从一个回顾性、批量式的业务监控系统转变为预测性、实时的业务优化系统。

让我们简要回顾几个推动这些功能的关键的大数据技术。

Apache Hadoop

Apache Hadoop是一个开源软件框架,支持数据密集型、本地分布、本地平行的应用程序。对很多人来说,Hadoop是大数据的同义词。它支持应用使用水平扩展架构在标准硬件的大规模集群上运行。Hadoop实现了MapReduce这种计算模型,将应用分割为很多个小的工作片段,每一个片段可能由集群中的任意一个节点执行或再执行。另外,Hadoop提供了一种分布式文件系统(即HDFS),用来存储计算节点上的数据,提供了集群内的高带宽聚集。MapReduce和HDFS都是这样设计的,以保证节点失效可以由框架自动处理。这使得应用能和上千台独立计算的电脑合作处理PB级的数据。目前整个Apache Hadoop平台通常被认为由Hadoop kernel、MapReduce、HDFS和包括Apache Hive、Apache HBase等在内的一些相关项目组成。

提示:阿帕奇软件基金会是由一群开发者和用户组织的,目的是协调开源项目的投资组合并推动开源产品的发展和使用,本章后面将谈到它们的一些产品。

Hadoop MapReduce

Hadoop MapReduce是一种编程模型,用于大规模数据集在一个集群上的分布式并行运算。MapReduce包含了Map过程和Reduced过程,Map过程进行筛选和排序(例如将学生按照名字排成列,一个名字是一列),Reduced过程进行总结运行(例如合计每一列的学生数量,计算每个名字出现的频率)。MapReduce系统(也称为基础结构或框架)协调分布式服务器,并行运行多个任务,管理系统各个部分之间的所有通信和数据传输,处理冗余、故障、管理全过程。图11–3显示了MapReduce功能的运行过程。

063

图11–3 MapReduce流程图

Apache Hive

Apache Hive是建立在Hadoop上的数据仓库基础构架,提供数据的总结、查询和分析。尽管最初由脸谱网开发,但Apache Hive现在被其他公司使用并拓展,例如东飞公司。截至本书写作的时候,亚马逊一直是Apache Hive的一个软件分支,它被包含在亚马逊网络服务的Amazon Elastic MapReduce中。Apache Hive支持存储在Hadoop兼容的文件系统中大数据集的分析。它提供一种类SQL的语言,称为HiveQL,同时全面支持MapReduce。为了加速查询,Hive提供了索引,包括位图索引。

Apache HBase

HBase是一个用Java编写的非关系、分布式的开源数据库模型。它是阿帕奇软件基金会Apache Hadoop项目的子项目,运行在HDFS之上。HBase提供了一种容错方式存储大容量零散数据。HBase的特色是可压缩、内存中运行以及以列为基础的Bloom filters。HBase的表拥有输入和输出功能,就像MapReduce在Hadoop中运行时一样,而且可通过Java API存取。

Pig

Pig为编写MapReduce程序提供了高级、原生的平行数据流语言和执行框架。Pig创建了更高级的MapReduce编程语言,类似于SQL,是对于关系数据库管理系统而言更高级的结构。Pig可以使用用户定义的函数进行扩展,开发者可以用Java、Python、JavaScript或Ruby编写函数,然后直接从语言中调用。

图11–4 展示了一个典型的Hadoop架构(或称生态系统配置),包括了很多前面讨论到的组成部分。

提示:在Apache Hadoop的网站上(http://hadoop.apache.org/)有很多关于这些技术的内容。我也推荐阅读《Hadoop:权威指南》(Hadoop: The Definitive Guide )这本书,作者是汤姆·怀特(Tom White)。对于那些想要学习更多关于Hadoop和Hadoop生态系统的人来说,这是本权威著作。

064

图11–4 标准Hadoop架构

值得注意的是很多供应商花费了大把精力拓展Hadoop的函数性,从而可以更加方便地在一个组织现有的数据仓库和商业智能环境中利用Hadoop。截至本书写作的时候,一些像Pivotal这样的供应商正在增加新的功能,直接利用工业标准SQL查询工具和受过SQL训练的人员访问存储在HDFS中的数据(如图11–5所示)。我期待这一趋势持续下去。

新的分析工具

大数据推动着分析方法和数据可视化工具领域的一连串新发展。一些更加有趣的工具包括:

• R,一个开源的编程和统计语言,很快在大学和类似的创业公司中流行起来。R是一个GNU项目,所以这个软件可以免费转发,而且可以有上千个开发者使用并扩展R的功能。

• Apache Mahout是另一个阿帕奇软件基金会的项目,提供基于Hadoop平台的可扩展的机器学习算法。Mahout基于Apache Hadoop使用MapReduce实现聚类、分类、协同过滤。

• MADlib是一个支持数据库内分析的开源图书馆。它提供支持结构化、半结构化和非结构化数据的数学方法、统计方法和机器学习方法的数据平行实现。

065

图11–5 扩展的Hadoop架构

新的分析算法

我不想遗漏在新的高级分析功能的发展过程中出现的很多创新,关于这些新算法的讨论已经超出了算法范畴。

• 支持向量机建立在决策平面的概念上,决策平面定义了将不同隶属关系的目标集分开的决策边界以及一个决策平面。

• 随机森林包含了多棵决策树,每棵树可以对一组预测值做出一个反应。

• 集成方法是一种模型测试和检验的技术,通过测试多个模型获得比测试任何一个单独的模型更好的预测效果。

• 冠军/挑战者是另一种测试和检验技术,将你目前的分析模型当作“冠军”,然后用不同的分析模型挑战冠军,每一个“挑战者”与冠军之间都有一些衡量方法和定义方法的差异。

• 干扰矩阵是一个特殊的表格排版,它允许一种算法性能的可视化。

• 小波变换是指通过一个小波产生的正交级数表示一种平方可积函数,通常用于时频转换。

• 文本挖掘是指从非结构化数据中挖掘非结构化信息并提取有意义的数值指标,将非结构化数据转变为结构化结果。

• 情感分析寻求决定一个演讲者或一个作家对某些话题的态度或一份文件的整体倾向,例如从社交媒体信息中决定对一部电影的情感倾向。

• 特征选择是指选择几个相关特征用于模型构建,特别是当数据可能包含很多冗余或不相关的变量的时候。

将大数据带入传统的数据仓库世界

让我们重点介绍几个方面,本章之前讨论的大数据的功能和技术将可能在这些方面加强并拓展你现有的商业智能和数据仓库环境。这些大数据的功能和方法要求你换个方式思考自己处理商业智能、数据仓库环境和架构的方法。请对面前的可能性敞开胸怀!

数据丰富:考虑ELT,而不是ETL

传统的ETL方法(数据提取、转换和加载)在把数据加载到数据仓库中之前,先将来自不同源系统的数据进行转换(标准化、对齐、清洗和集成)。然而在ELT方法中,你首先提取并加载数据进入一个大数据环境,例如Hadoop。一旦进入Hadoop,你可以利用多个并行处理加速现有的数据转换过程,并利用新的扩展的数据处理功能创造新的数据浓缩算法。一个扩展的环境使你从不同的角度思考如何处理数据转换和提炼过程。开发人员需要放开由于传统的ETL处理时可利用的计算功能有限造成的匮乏心态。你要接受一种富足心态,利用几乎无限制的处理功能实现数据转换并创造新的数据浓缩算法。我来举个例子。

在数字营销的世界中,组织采用ELT过程创造新的综合指标,从而帮助量化不同数字媒体处理方法(印象、点击、关键字搜索、社交媒体上发帖)的转换归因。这些数字营销组织尝试着确定哪些数字活动的组合(在印象、点击、搜索和社交媒体发帖之中)是形成一次转化或购买事件的原因。这些组织需要决定哪些活动组合对于推动购买是最有影响的。这种分析的结果将被数字营销人员用来分配数字营销花费并优化正在进行的营销活动。

这种归因分析是一个非常麻烦的问题,也是ELT过程的一个理想选择,因为:

• 你需要为每一个有过转化或购买行为的个人创建一个包含所有不同的数字营销活动或方法的市场购物篮(例如印象、点击、关键词搜索和社交媒体发帖)。

• 你可以根据不同的营销方法为每一个市场购物篮创建新的频率(多久一次)、回头率(最近的时间)和顺序(按什么顺序)指标。

• 你分析每一个市场购物篮,并对不同的频率、回头率和顺序的组合打分,确认具体的导致转化或购买的方法组合。

• 你想要确认结果,以便优化你在不同的营销方法上的数字媒体花费(例如网站、社交媒体网站、关键词、广告网络、受众分类、广告类型、时段及其他)。

这个问题之所以是ELT过程的理想选择,是因为你需要可以获得重要的原始日志文件的历史(根据产品类型不同,需要30天、60天或90天的历史)的途径。你需要在将它们放入你的分析环境之前,处理整个日志文件的历史,从而创建频率、回头率和顺序的综合指标。用传统的ETL方法进行这种类型的预处理是很困难的,你可能不得不为了每一个独立的综合指标的计算而分析整个历史,但它却完美地适用于Hadoop和MapReduce,你可以一次性创建这些新的综合指标。

数据联邦:查询是新的ETL

数据联邦和语义主数据管理领域的持续发展使得组织可以拓展数据库,从而在需要的时候访问非数据库和外部数据源。数据联邦软件工具支持从不同的数据源访问数据,并且可以在无形中集成数据,并不需要将数据永久地移动到集中式数据存储库或数据仓库中。语义主文件提供了定义、分类和链接,保证了对这些虚拟化的数据源实现无缝的虚拟访问。

这种虚拟数据仓库可以满足一个组织迅速访问非频繁访问的数据源的需求,不需要经过几周或几个月的时间将数据整合进企业的数据仓库。这个数据可以被虚拟访问和分析,就像数据真实地被存储在一个集中式数据存储库中一样。如果后来决定需要更频繁地分析这个数据源,那么从分析性能和数据管理的角度考虑,最好将频繁访问和分析的数据源移动到集中式的数据环境中。

数据联邦的优点包括:

• 迅速扩展你的数据库环境,以便访问非频繁访问的数据源。

• 支持一次性的业务分析请求。

• 在移动到企业数据仓库内之前,对业务用例进行测试和验证。

软件供应商正在开发新的技术,这些技术可以在数据仓库外部索引数据源并且在有需要的时候帮助访问那些数据。这类似于谷歌为整个互联网建立索引,以便向它的成千上万的用户提供次秒级搜索结果。这是一种强劲的技术原动力,因为这意味着业务用户不必等待数据库更新就能处理具体的一次性报告并分析需要。图11–6展示了典型的数据联邦的组成部分。

066

图11–6 数据联邦

提示:对于大规模统计和机器学习的分析建模,你需要大数据集支持模型,所以数据联邦并不适用。你不希望实质上或“按照需求”移动TB级的数据。

数据建模:读时模式

HDFS支持读时模式,这意味着你不再需要被迫在把数据载入数据存储库之前定义数据模式,而是可以直接将原始数据扔进数据存储库,等到你查询数据的时候再定义模式。

提示:数据库是写时模式,开发人员必须先定义数据模式,再将数据载入数据库。

读时模式这个概念有以下优点:

• 可以迅速摄取大量数据集。你不用担心在装载数据之前先规定数据的格式,只需将数据原样倒入数据存储库。这在处理例如文本文件、音频、视频和图片这样的半结构化和非结构化数据时特别有用。

• 在根据要查询的内容定义合适的架构时有更大的灵活性。目前的读时模式对于尝试访问数据的不同部门(如销售、营销、财务、研发或工程部门)来说,架构结构并不是最理想的。为了适应所有不同的用户类型,你最终选择Franken架构,给每一个部门都提供一点东西,但是可能对每一个部门来说不都是正确的架构。

• 如果摄取的元数据发生变化(比如源系统中突然出现一个新的数据元素),该进程不会中止,你也不会损失什么。新的数据元素随后会被消耗并分析。

多亏了Hadoop和NoSQL这样的新的数据管理技术,读时模式技术成为可能。虽然在查询过程中会存在一点性能损失,但是考虑到解放了大量的商业节点来处理一个具体的查询请求(通过大规模并行处理架构或云实现),你可以用原始的、扩展的计算能力压倒性能损失问题。

读时模式的最大挑战在于,查询语言变得更加复杂,因为除了数据的描述性逻辑,还包括元数据的逻辑和存在条件。更糟糕的是,每一种技术有它自己的语言。目前还没有标准语言。

Hadoop:新一代数据暂存和准备区

Hadoop用来拓展一个组织已有的数据仓库和商业智能环境的一个早期用例是新一代的数据暂存和准备区(如图11–7所示)。这种架构带来了以下优点:

• 原样摄取并存储大量数据的功能,通常所花的成本与传统的数据仓库相比减少了95%。不用管你摄取的数据的结构(结构化、半结构化、非结构化、音频或视频),你可以快速地按照原样装载并存储所有的数据到Hadoop内,接着它就可以被用到你的ETL、数据库、商业智能和高级分析过程中。

• 你可以利用Hadoop自身的并行功能,更快更便宜地实现传统的ETL数据转换和对齐工作。这可以显著地加快传统ETL过程以及你和业务用户之间的服务水平协议。另外,它缩短了从数据事务或事件出现到数据可以运用到你的ETL、数据库、商业智能和高级分析过程之间滞后的时间。

• 你可以接触到传统的ETL过程不可能使用的新的数据提炼技术。例如,你可以解析非结构化数据集,从而创造出可纳入你的企业数据仓库的新指标、维度和维度属性。

• Hadoop为一个分析沙盒环境的自动配置提供了基础。在这个分析沙盒中,数据科学家可以从Hadoop数据缓存区抓取任何他们需要的数据,而不需要担心影响数据库的生产环境和相关的服务水平协议。数据科学家可以从他们需要的数据源中选择任意数据粒度,从而建立、测试并改进他们的分析模型。

067

图11–7 Hadoop下一代的数据暂存

正如你看到的,使用Hadoop作为下一代数据缓存和准备区可以产生新的、吸引人的业务效益——不用说,它可能比你现有的ETL环境便宜且灵活。你将会在你的ETL、数据仓库、商业智能和高级分析环境中看到更多的使用Hadoop的例子。成本效益、处理功能、低延迟性数据的获取和更加简洁的整体架构,这些特点太引人注目,我们无法忽视。

MPP架构:加速你的数据库

MPP(大规模并行处理)数据库提供了一个具有成本效益、横向扩展的数据库环境,允许组织运用摩尔定律改进x86处理器内的性价比。MPP数据库为大量数据的发现和探索提供了一个横向扩展的数据库和分析平台。基于便宜的商业集群,MPP数据库可以扩展、补充甚至取代部分已有的数据库,在管理大量详细数据的同时提供灵活的查询、报告、仪表盘和分析(如图11–8所示)。

068

图11–8 大规模并行处理数据库

提示:摩尔定律以英特尔创始人之一戈登·摩尔命名,是指当价格不变时,每经过18个月,计算能力将提高一倍,这产生了相当可预测并且引人注目的经济效益。如果有人在其他行业实现了摩尔定律,它的经济力量就会令人赞叹,比如如果航空业的发展从1978年后遵循摩尔定律,那么飞机票的价格只需要0.01美元,而航行时间只需要一秒钟。

MPP架构的特点包括:

• MPP架构提供在商业处理器上运行的大规模可扩展的、非共享、横向扩展的数据平台。

• 提供自动并行化。

• 所有的节点可以并行扫描并处理。

• 只需要添加更多的节点就可以线性扩展。

一个MPP数据库将保证访问到更细粒度的数据,从而支持查询、报告、仪表盘的向下钻取和横向钻取的探索。分析可以建立在详细的数据而不是数据集合之上。最近的发展使你可以将数据库直接建立在HDFS上,享受HDFS带来的成本效益、横向扩展的架构和本地并行化,同时使用组织基于SQL的标准商业智能工具和受过SQL训练的业务分析人员,提供对基于HDFS的数据仓库的访问途径。

MPP架构的优点是利用更多具体的、稳健的维度数据。例如:

• 季节性地预测零售销售额和能源消耗。

• 提供定位,从而精确找出贷款或欺诈风险,并且支持基于定位的服务。

• 超维度,运用于数字媒体归因分析或医疗方案分析。

数据库内分析:将分析带向数据

数据库内分析能够解决高级分析的最大挑战:数据库和分析环境之间的大规模数据移动的要求。这个要求曾经使很多组织和数据科学家不得不妥协于使用集合数据或样本数据,因为分析探索和发现过程中的数据转换实在是太折磨人了。数据库内分析通过将分析算法向数据移动逆转了这个过程,从而加速了分析模型的开发、调整和部署。使用数据库内分析省去了数据的移动,这带来了诸多好处:

• 以如今的传统方法(没有数据库内分析),整个分析模型的开发和测试需要几个小时。比如,如果一个数据科学家需要将1TB的数据从一个包含了5个处理器的数据库服务器移动到分析服务器,按照一秒钟1GB的速度进行移动,然后运行分析模型,整个过程将需要193分钟,这只是模型开发和测试中的一次迭代。

• 有了数据库内分析(数据科学家可以直接在数据库内运行分析模型,不需要把数据移动到另一个分析环境中),整个分析开发和测试过程可以大大地被缩短。因为移动数据是最花费时间的事,减少数据移动就可以将处理时间缩短为1/N,其中N是处理单元的数量。因此,开发分析模型并处理1TB数据的时间可以缩短为原来的1/16(使用同样的有5个处理器的系统),从原来的193分钟缩短为12分钟。这意味着数据科学家可以更快速地对模型进行重复测试,理论上来看,最后可以建立一个更加精确、审查更加彻底的分析模型(如图11–9所示)。

069

图11–9 数据库内分析

在分析方面,一旦模型得以建立,并且从数据集中获取了业务洞见,那么将数据仓库环境和分析环境放在同一个MPP平台上将会简化分析模型和分析洞见到数据仓库和商业智能环境的迁移。

数据库内分析的优点在于,能够利用实时(低延迟性)的数据存取建立更加及时的分析模型。例如:

• 推动实时的客户获取、预见性维护或网络优化决策。

• 按需求更新分析模型,根据目前的市场或当地天气情况。

云计算:提供大数据的计算力

凭借其共享的计算和存储资源、软件和数据,云计算提供了最理想的大数据平台。一个大的数据准备云平台支持:大规模的数据管理的可扩展性(从TB级数据到PB级数据);低延迟性的数据存取;加速高级分析建模的综合分析。云技术使你能够建立一种平台即服务的环境,这种环境使应用开发人员能够快速地提供开发环境并且极大地加快分析结果的操作化。所有这些功能在需要的时候都可以获得,支持重复出现以及一次性的业务计算要求和分析要求。

一个大的数据准备云计算平台提供以下关键功能:

• 敏捷的计算平台:高度灵活的、可重构的数据及分析资源和架构确保了敏捷性。分析资源可以快速地重构并重新调配,从而满足不断变化的业务需要,帮助达到分析的灵活性和敏捷性的新层次。

• 线性的可伸缩性:大规模的计算能力的实现意味着业务问题可以用一种完全不同的方式解决。例如,传统的ETL过程可以转换为一种数据丰富的过程,建立新的综合评价指标,例如频率(多久一次)、回头率(最近一次的时间)、顺序(按照什么顺序)、N镶嵌和行为类别。

• 应需的、分析密集的工作负载:以前,组织不得不满足于进行粗糙的事后分析;它们缺乏足够的计算能力使它们能够在事件发生之时进行深入分析,也无法对所有可能驱动业务的不同变量进行考量。有了云平台,这些计算密集的、短期爆发的分析需求可以得到开发。业务用户可以实时地分析大规模数据,从而挖掘出埋藏在数以百计的维度和业务指标中的相关的可操作的细微差别。

小结

本章首先讨论了从传统的ETL、数据仓库和商业智能环境向现代的、大型的数据准备的数据管理和分析环境的转变。

接着,我介绍了一些关键的大数据技术(Hadoop、Map- Reduce、Hive、HBase和Pig),讨论了由这些新技术带来的新的数据管理和分析功能。本章主要讨论了其中一些新的大数据技术、功能和方法可以如何被用以扩展和加强组织目前对ETL、数据库、商业智能和高级分析的投资。