版权信息

COPYRIGHT

书名：大数据与智慧社会：数据驱动变革、构建未来世界

作者：张克平；陈曙东

出版社：人民邮电出版社

出版时间：2017年6月

ISBN：9787115456243

本书由人民邮电出版社授权得到APP电子版制作与发行

版权所有·侵权必究

内容提要

大数据正在改变人们的生活、社会的运行方式以及各行业的竞争生态，是提升政府治理水平和企业竞争力的核心要素。然而，政府和企业如何才能抓住大数据带来的宝贵机遇，改善公共服务、激发商业创新？推进大数据应用的进程对现有技术框架、管理机制、评价体系又有哪些新的要求？

针对这一系列问题，《大数据与智慧社会》一书做出了系统的回答。本书从全局出发，对大数据的基本内涵进行了系统描述，概括了大数据的前世今生，揭示了其哲学本质；以技术为主线，深刻剖析了大数据的技术框架，预测了大数据的技术发展趋势；理论与实践相结合，形成大数据系统评价标准；选取大数据在生活、政务、交通、医疗、金融领域落地应用的实战案例，进行深入分析和解读，以期为我国的政府治理、经济发展、企业创新提供有效的指导和帮助。

本书适合政府决策者、企业管理者、IT实施者（CTO、CDO、技术人员等）以及高等院校相关专业的师生阅读。

【关注公众号】:奥丁读书小站（njdy668）

1.每日发布新书可下载。公众号首页回复书名自动弹出下载地址。

2.首次关注，免费领取16本心里学系列，10本思维系列的电子书,15本沟通演讲口才系列，20本股票金融，16本纯英文系列，创业，网络，文学，哲学系以及纯英文系列等都可以在公众号上寻找。

3.我收藏了10万本以上的电子书，需要任何书都可以这公众号后台留言！看到第一时间必回！

4.也可以加微信【209993658】免费领取需要的电子书。

5.奥丁读书小站，一个提供各种免费电子版书籍的公众号，提供的书都绝对当得起你书架上的一席之地!总有些书是你一生中不想错过的！上千本电子书免费下载。

本书编委会

主编　张克平　　陈曙东

编委（按姓氏笔画排序）

孔聪聪　　张　亮　　杜　蓉　　李伟炜　　倪　民

推荐序一

“大数据”的概念从问世到现在仅几年时间，却在全球引起了一次又一次热潮。这其中有两个重要因素在起推动作用。第一个是人类社会在发展过程中对信息的渴求。但是为什么直到5年前才“突然”出现大数据的概念？这就引出了第二个因素——以传感技术、互联网、移动智能终端为代表的一系列新信息技术，使信息的获取、利用和集聚在数量、作用和影响力等方面发生了突飞猛进的变化，成为推动历史进入新阶段的根本原因之一。这一切，深深植根于大数据的内在含义中。

认识大数据的本质，就是认识信息资源的本质。信息资源在人类发展的全部历程中扮演着极其重要的角色。语言这种特定的信息形式使人类摆脱了相互交流的障碍，个体的发现和能力可以在一个群体扩散利用，加快了人类进化的步伐。从结绳记事、岩画到文字的诞生，这些方式的出现使人类信息的交流摆脱了口口相传的时空约束，使经验和知识有了客观载体，可以跨越时空，显著加速了人类文明的进化。活字印刷、机器印刷的发明提升了信息生产和传播的效率及质量，推动了农业文明的快速发展。各类书籍、报刊、杂志的出版发行，各种藏书楼、图书馆的产生，为人类知识的汇集和利用提供了新的平台，加速了科技和文明的发展，推动了农业社会向工业社会迈进。

1970年，哈佛大学的奥汀格教授和他的研究队伍提出了信息、材料、能源是推动人类社会进步的三种基本资源的论断。40年后，全球经济发展的实践证明了这一论断的正确性。把握大数据本质，就是要深刻理解“信息资源是推动人类社会进步的一个基础资源”这一观点。

传感技术、互联网、虚拟现实、大数据等一系列新信息技术的诞生和发展，使人类对信息的处理、传输、利用能力得到全面的提升，信息资源在社会发展中的作用日趋重要，推动着工业社会向信息社会迈进。2008年金融危机后，一些欧洲国家又相继发生主权债务危机，与贸易保护主义、恐怖主义、南北不平衡等重大全球性问题纠缠在一起，全世界的理论家、战略家、政治家都在思考同一个问题，如何使人类社会摆脱危机，走向新的发展阶段。从2011年开始，新工业革命、第三次工业革命、互联网能源、工业革命4.0、CPS、两化融合和两化深度融合、第二个机器时代等概念不断产生和发展。麻省理工学院（MIT）的埃里克·布林约尔松（Erik Brynjolfsson）和安德鲁·麦卡菲（Andrew Mc Afee）合著的《第二个机器时代》（The Second Machine Age）提出，我们将经历人类历史上两个最神奇的事件：创造真正的机器智能，以及全体人类通过一个共同的数字网络互联互通、从根本上改变地球经济的格局。第二个机器时代与第一个机器时代的不同之处在于智能化。第一个机器时代的机器取代并倍增了人类和动物的体力劳动，第二个机器时代的机器将取代并倍增我们的智慧。

这些现象和趋势的共同指向就是经济社会正在发生重大变革，这个变革的核心是信息技术体系和工业技术体系的融合，信息资源与能源、材料的协同，人类社会的经济和社会活动将以赛博–物理空间为依托。大卫·兰德斯指出：“工业革命是指生产方式上的深刻变革。即通过用机器代替人工、用非生物力代替人力和畜力，实现从手工工业向机器大生产的转变。”由于工业技术体系本身已经不足以从根本上继续提供推动历史转型的技术能力，人类需要构建赛博–物理空间，将信息、材料、能源三种资源利用综合起来，提升到一个新的水平。信息、材料、能源是推动经济社会发展的三驾马车，工业革命形成的生产力和信息革命形成的生产力推动人类社会进入一个新的历史阶段，已成为历史发展的必然要求。

面向未来，抓住大数据技术带来的机遇，主动推进社会发展变革，要特别重视技术、产业和应用。从技术的角度来看，主要有两大问题：一是大数据每隔几年就会提升一个数量级，从这个角度看，如今的计算机处理体系不符合大数据处理的需求，所以要从芯片开始重构适合大数据发展的处理系统，要有新的芯片和新的处理结构，这是技术问题的一个制高点；第二个制高点是大数据的语义处理能力，也是智能技术的核心部分，这一技术将成为今后一个阶段信息技术创新的核心内容。从产业角度看，大数据产业大概可以分为两类：一类是“技术变成产业”，就像当年数据库管理系统变成了数据库公司，当真正的大数据处理芯片和计算架构形成时，还将会形成新的产业；另一类是各个企业、机构甚至个人（以后我们很多人）都可以变成大数据的拥有者和大数据产业的从业者。从应用的角度看，大数据最重要的意义在于，所有企业、机构和个人如何将大数据变成自身提升能力、提升竞争力、提升生活质量的来源，“以信息化培育新动力、以新动力推动新发展”，用“信息流引领技术流、资金流、人才流、物质流”，使其成为资源配置优化、全要素生产率提升、经济社会发展转型、经济结构调整的新动能。

《大数据与智慧社会》一书系统地介绍了什么是大数据和大数据技术框架，详细分析了以Hadoop和Spark为代表的典型技术，介绍了大数据在生活、政务、交通、医疗和金融领域的应用，为我们认识大数据、利用大数据提供了又一份精神食粮。更要指出的是，本书出自几位基层信息岗位的主管，着实难能可贵。

是以为序。

杨学山

工业和信息化部原副部长

北京大学教授

推荐序二

随着信息技术的飞速发展，“大数据”已被认为是继互联网、云计算、物联网之后又一大颠覆性的技术革命。通过对海量、动态、高增长、多元化数据的高速处理，大数据正在引发全球范围内的经济和商业变革，其应用涉及金融、交通、教育、医疗、制造、环保、零售、文化、娱乐等各行各业。大数据更带来了一场政府治理方式的变革，在提高公共决策能力的同时，改变着国家治理的架构和模式。可以毫不夸张地说：“大数据时代没有旁观者。”

研究发现，即使在缺乏精准的数据分析模型和算法的情况下，只要拥有足够多的数据，也能揭示事物的内在联系，引出重要的结论。这给计算衍生学科带来了里程碑式的启示：大数据本身可以保证数据分析结果的有效性。因此，大数据被誉为新的生产力。在大数据时代，大数据生产力将会推动生产关系和社会的发展，创造无穷无尽的价值，给人类思维的发展带来变革。

大数据使我们至少拥有了四个方面的核心能力。

首先是海纳百川的数据融合能力。通过将各种数量庞大、分布广泛、形式多样、变化迅速的异构数据资源汇聚、融合在一起，资源数量和质量的巨大提升引发资源价值的巨大提升，使大数据成为现代社会的巨大财富。

其次是基于大数据的科学研究能力。基于这种能力的科研范式有别于传统的实验归纳、模型推演、仿真模拟等范式，被称为数据密集型科学发现，即第四范式。应当指出，运用这种能力，当数据达到一定量时，传统计算架构已经不再适用，云计算应运而生。实际上，大数据与云计算相辅相成，两者之间互相推动与促进。没有云计算能力，大数据的价值就无法被挖掘出来；没有大数据，云计算也就没有用武之地。

再次是明察秋毫的洞见力。透过数据发现隐藏在事物表面下的本质规律，发现事物之间的关联，揭示事物发展的规律，便于人类发现新的原理或者产生新的科学创造。这种运用第四范式获得的科学发现，既不像理论和模拟那样在一定程度上告诉我们“为什么”，也不像实验那样明确地告诉我们“是什么”，只能告诉我们“与什么相关”。第四范式强调了以大数据为基础的数据密集型研讨方法，这种方法将会在越来越多领域的研讨中发挥至关重要的甚至是决定性的作用。

最后是高瞻远瞩的预测和决策能力。在过去的商业决策中，管理者凭借自身的经验和对行业的敏感来决定企业的发展方向和方式，这种决策有时候仅仅参考一些模糊的数据和建议。而大数据和大数据分析工具的出现，让人们找到了一条新的科学决策之路。以数据为依据，立足事实，既观全局，又见未来。

大数据正是因为能赋予我们这四种核心能力，才受到越来越多的关注。我国已经将大数据提升到国家战略高度，在“十三五”规划纲要中指出：实施国家大数据战略，把大数据作为基础性战略资源，全面实施促进大数据发展行动，加快推动数据资源共享开放和开发应用，助力产业转型升级和社会治理创新；深化大数据在各行业的创新应用，探索与传统产业协同发展新业态、新模式，加快完善大数据产业链；加快海量数据采集、存储、清洗、分析发掘、可视化、安全与隐私保护等领域关键技术攻关。习近平总书记强调，机会稍纵即逝，抓住了就是机遇，抓不住就是挑战。我国发展大数据有非常好的机遇，同时我们也应该清醒地认识到，我国大数据产业刚刚起步，从技术上、观念上、法律上等多个层面都需要变革，才能满足大数据的发展需要。

由张克平局长、陈曙东研究员主编的《大数据与智慧社会》一书，顺应时势，系统地从大数据起源、大数据哲学本质、大数据技术框架、大数据应用案例等不同的角度为读者展示了一幅大数据技术图谱。该书首先概述了大数据的哲学本质、技术现状和发展趋势，然后详述了大数据的技术框架、大数据存储和大数据处理技术。“科学家要多做实践中的研究”，当前，大数据应用处于起步期，产业生态处于酝酿期，必须在实际应用中发挥大数据技术的作用，推动大数据产业的发展。因此，作者们又详述了大数据在生活、政务、交通、医疗和金融等相关领域的应用实战，为读者使用大数据指出了一条探索之路。

我相信本书将受到关注大数据的“政产学研用”各界的欢迎，为大数据在中国的发展助一臂之力。

倪光南

中国工程院院士

第1章

大数据概述

1.1 什么是大数据

1.1.1 大数据的定义和特征

什么是大数据？目前业界有多种定义和理解方式。

大数据的基本定义

最早进入人们视线的大数据的3V定义，由高德纳（Gartner）分析师道格·莱尼（Doug Laney）在2001年提出。3V分别代表Volume（数据规模大）、Velocity（快速的数据流转和动态的数据体系）、Variety（多样的数据类型）。2012年，高德纳修改此定义为“大数据是大量、高速、和/或多变的信息资产，它需要新型的处理方式来促成更强的决策能力、洞察力与最优化处理”。

美国咨询公司麦肯锡在其报告《大数据：下一个创新、竞争和生产力的前沿》（Big data：The nextfrontier for innovation,competition,and productivity）中对大数据给出的定义是：大数据是指大小超出常规的数据库工具获取、存储、管理和分析能力的数据集合。但它同时强调，并不是说一定要超过TB值的数据集才能算是大数据。

大数据企业Hortonworks 公司战略副总裁肖恩·康诺里（ Shaun Connolly）认为，过去的资料大部分是人工手记下来的交易资料（Transactions），现在则是机器替我们记录下来的交易资料；除此之外，还有人们跟事物、企业间的互动资料（Interactions），如人们在网络上点击网页和链接的记录；最后则是由机器自动生成、累积下来的观察资料（Observations），如智慧家居产品记录下来的室温变化数据等。因此，肖恩·康诺里定义大数据是由交易资料、互动资料、观察资料所组成的资料类型。

著名的摄影师和出版人里克·斯莫兰（Rick Smolan）在其著作《大数据的人性面孔》（The Human Face of Big Data）一书中从哲学角度对大数据进行了定义：大数据是帮助地球建构神经系统的一个过程，在这个系统中，我们（人类）不过是其中一种感测器。

大数据的5V特征

要想充分了解大数据，除了各种定义以外，我们还必须了解大数据的特征。在高德纳给出大数据的3V特征之后，业界人士在此基础之上陆续提出了更多“V”，如Veracity（真实性）、Validity（可验证性）、Value（数据有价值）、Visibility（可视化）等，其中以 Value最被普遍认同，这就是IDC（国际数据公司）给出的大数据4V特征。还有其他一些机构将Veracity（数据真实性）也纳入大数据的特征描述中来，形成了5V特征。

本书将分别从数量（Volume）、多样性（Variety）、速度（Velocity）、价值（Value）以及真实性（Veracity）这五个方面来剖析大数据的特征。

数量（Volume）：这个特征描述的是汇聚在一起进行分析的数据规模非常庞大。那么，大数据时代的数据规模究竟有多大呢？我们来看一组测算数据。全球的数据以每年40%的速度增长，截至2011年4月，美国储存数据量最大的国会图书馆拥有235TB（1TB=1024GB）的数据；2010年，全球企业硬盘上存储的数据超过7EB（1EB=10亿GB），相当于美国国会图书馆中存储数据的3万倍；全球消费者在个人电脑上存储了超过6EB的数据；美国的17个行业大类当中，有15个行业的数据储藏量超过了美国国会图书馆。

多样性（Variety）：数据形态多样，可以被归类为结构化、半结构化和非结构化数据。相对于以往能够用数据或统一的结构加以表示的结构化数据，半结构化和非结构化数据越来越多，包括网络日志、音频、视频、图片、地理位置信息等，这些多类型的数据对数据的处理能力提出了更高要求。

速度（Velocity）：这个特征描述了大数据的高速流转和其动态的数据体系，表现为数据量的增长速度快。如今的数据量大约每20个月就能增长一倍。同时，系统要能够快速地处理这些数据，时效性要求高。例如，搜索引擎要求几分钟前的新闻能够被用户查询到，个性化推荐算法要尽可能地实时完成推荐。这是大数据分析区别于传统数据挖掘的显著特征之一。

价值（Value）：这个特征包含两个方面的含义。一方面指大数据价值密度低。尽管我们拥有大量数据，但能够真正发挥价值的仅是其中非常小的部分。以监控视频为例，一段时长为1小时的不间断视频，其中关键视频数据可能时长仅为1~2秒。另一方面指大数据背后潜藏的价值巨大。例如，美国社交网站Facebook有10亿用户，网站对这些用户信息进行分析后，广告商可根据结果精准投放广告。对于广告商而言，10亿用户的数据价值上千亿美元。

真实性（Veracity）：对于虚拟网络环境下如此大量的数据采取措施确保其真实性、客观性，是大数据技术与业务发展的迫切需求。同时，通过大数据分析真实地还原事物的本来面目、预测事物的发展规律，也是大数据应用未来发展的趋势之一。

大数据的十字特征

大数据是一个宽泛的概念，以上任何一个定义和特征均无法全面地概括大数据的特点。因此，本书用“大杂全多快，久活简稀联”概括描述大数据从产生、存储、处理到应用这一全生命周期内区别于传统数据的特征，称为大数据的“十字特征”。

一“大”：数据体量巨大，对应于4V描述中的“Volume”。截至目前，人类生产的所有印刷材料的数据量是200PB（1PB=1024TB），而历史上全人类说过的所有话的数据量大约是5EB（1EB=1024PB）。

二“杂”：数据类型多种多样，对应于4V描述中的“Variety”。

三“全”：大数据应用为决策者提供一个业务的全局视图，这里主要是强调数据的业务完备性。

四“多”：大数据的数据来源多、维度多，不仅包含企业内部业务数据，而且包含许多相关的外部数据，如政策数据、经济数据、气象数据、环境数据等。这里主要强调引入外部数据源构建数据的多维性。

五“快”：大数据强调的是在线数据的实时分析处理，这是大数据区分于传统数据分析的最显著特征。从这个角度来说，对应于4V描述中的“Velocity”。在如此海量的数据面前，处理数据的效率就是企业的生命。由于业务变化速度加快，数据的贬值速度也被加快。数据如果不能被及时地分析利用，其价值会快速贬值。只有及时地挖掘数据背后的价值，数据之间的联系才会随之变得更加紧密，就像滚雪球一样更加有利于发现数据背后的价值。

六“久”：大数据应用十分重视数据的长期积累，数据积累时间越长，越有利于发现数据间内在的相关性。

七“活”：数据是在线的，可以随时调用和计算，这是大数据区别于传统数据的最大特征。放在磁盘或磁带中的离线“死”数据，其商业价值远远不如在线的“活”数据。

八“简”：在使用的分析算法上，大数据算法突出了简单、易行的特点。这也是不同于传统数据挖掘采用小数据复杂算法的显著特征之一。

九“稀”：对应于4V描述中的“Value”，即大数据应用中真正有价值的数据占比极少。有句谚语可以形象地比喻大数据“稀”的特点：“为了那一点点的金子，我们不得不保存所有沙子。”因此，如何通过有效的计算更迅速地完成数据的价值“提纯”已成为大数据亟待解决的问题。

十“联”：大数据更加关注数据间的关联性。近现代科学最重要的特征是寻求事物的因果性，无论是唯理论，还是经验论，区别只在寻求因果关系的方式不同。大数据最重要的特征是重视现象间的相关关系，并试图通过变量之间的依随变化找寻它们的相关性，从而不再一开始就把关注点放在内在的因果性上，这是对因果性的真正超越。

不管如何定义大数据、如何描述其特征，各大研究机构、企业都对其影响力进行了评估。我们从中可以看到其背后都隐含的一个共识：大数据已经成为科学和创新领域的前沿话题，需要全新的基础设施、分析体系、思考方式，将形成一个全新的数据生态系统，个人的思维、企业的发展、国家的治理、国家之间的博弈方式都将发生系统性改变，这将是一场大数据革命。

1.1.2 大数据的发展历程

大数据的技术前提

促进大数据发展的技术前提主要有三个。

一是存储能力的提升，存储成本的下降。1965年，英特尔创始人戈登·摩尔提出了著名的摩尔定律。该定律表明，当价格不变时，集成电路上可容纳元器件的数目每隔18~24个月便会增加一倍，性能也将提升一倍。以物理存储器为例，近半个世纪以来，其性能不断提升，同时价格不断下降。例如，1955年IBM推出的第一款商用硬盘存储器，1兆字节的存储量需要6000多美元。到2010年，同样1兆字节的存储量只需要0.005美分，而且性能也得到极大提升，一根头发大小的地方就能放上万个晶体管，即更小的空间和能耗可以存储更多的数据。由此可见，存储器的价格和性能在半个世纪内发生了巨大的变化，人们可以利用非常低廉的成本保存海量的数据。同时，由于商业模式的更新，集中建设数据中心大大地降低了单位计算和存储成本。因此，存储能力的提升和存储成本的下降为大数据的发展夯实了基础。

二是随着物联网和互联网技术的发展，数据的产生能力在增强。物联网技术诞生之后，越来越多的机器开始配备传感器，传感器可以感知和传输这些不断产生的数据，如智能家居设备可以产生用户的室温变化数据。移动互联网出现后，移动设备的传感器收集了大量的用户数据，如智能手环可以记录用户运动数据、生理数据等。同时，还有大型科学设备源源不断地产生大量的科学实验数据，如大型粒子对撞机一次实验会产生PB级别的数据。另外，由于社交媒体和“互联网+”的发展，人类在互联网上产生的数据越来越多。大数据时代，人人都是数据的生产者，每个用户都是一个独立的信息系统，不断地制造数据、沉淀数据，并最终引起了人类历史上最大规模的数据爆炸。

三是随着云计算的诞生和发展，人们处理数据的能力在增强。数据的处理离不开计算，没有云计算的诞生，就不可能有大数据。因此，理解大数据必须从云计算说起。云计算是人类处理数据能力的一次重大革命，这种新型的数据计算方法具有几种重要的特征。首先是计算体系规模庞大。云计算一般由数量惊人的计算机群构成，如谷歌云计算拥有的服务器超过100万台。其次是计算成本非常低廉。企业不必自建费用高昂的数据中心，只需要付出较少的采购费用，即可享受云服务商提供的专业而强大的计算能力。再者是计算服务具有按需分配和伸缩扩展的优点。云计算系统是一个极其庞大的资源池子，用户可以随时、随地、按需灵活地购买，就像购买煤气和自来水一样便利。普通人只要打开笔记本，就可以享受以往只有少数科学家才能拥有的超大规模计算能力。

大数据革命是云计算突破的必然产物。云计算甚至可以让普通用户体验每秒10万亿次的运算能力，有了如此强大的运算能力，模拟核爆炸、预测气候演变、实现基因测序都不再困难。随着云计算采集的数据越来越多，存储的数据规模越来越大，分析数据的能力越来越强，人们开始思考海量数据中可能隐含着以往未被发掘出来的价值。大数据这个全新的概念在此过程中也渐渐成型，并引起部分科学家的重视。

大数据的雏形

2007年1月，图灵奖得主、关系数据库的鼻祖吉姆·格雷（Jim Gray）发表了生平最后一次演讲——《第四范式：数据密集型科学发现》（The Fourth Paradigm：Data-Intensive Scientific Discovery）。吉姆·格雷凭借自己对人类科学发展特征的深刻洞察，提出将科学研究分为四类范式（Paradigm），依次为实验归纳、模型推演、模拟仿真和数据密集型科学发现（Data-Intensive Scientific Discovery），如图1-1所示。

图1-1 科学研究的四类范式

我们来回顾一下科学发展史上的几个重要范式及其变革。第一范式是指经验科学阶段，18世纪以前的科学进步均属此列，其核心特征是对有限的客观对象进行观察、总结、提炼，用归纳法找出其中的科学规律，如伽利略提出的物理学定律。第二范式是指19世纪以来的理论科学阶段，以演绎法为主，凭借科学家的智慧构建理论大厦，如爱因斯坦的相对论、麦克斯韦方程组、量子理论、概率论等。第三范式是指20世纪中期以来的计算科学阶段，面对大量过于复杂的现象，归纳法和演绎法都难以满足科学需求，人类开始借助计算机的高级运算能力对复杂现象进行建模和预测，如天气、地震、海啸、核试验、原子的运动等。

然而，近几年来随着人类采集数据量的惊人增长，摩尔定律正在冲破第三范式的合理性和承载力，传统的计算科学范式已经越来越无力驾驭海量的科研数据了，它必须被扬弃。正如吉姆·格雷在演讲中强调：“科研人员利用许多不同的方法收集或产生数据——传感器、图像控制器、超级计算机、粒子对撞机等。当数据最终呈现在你的电脑中时，你用这些硬盘中的数据做什么呢？不断有人找到我说：帮帮我！我有了所有的这些数据，我该做些什么呢？我的电子表格正在失控！当你有10000个电子表格，每个电子表格里面有50个工作簿的时候，将会发生什么？”欧洲的大型粒子对撞机、天文领域的STARRS望远镜每天产生的数据多达几千万亿字节（PB），很明显，这些数据已经突破了第三范式的处理极限，无法被科学家有效利用。

正因为如此，以处理海量数据为核心的第四范式——数据密集型科学发现呼之欲出。为了适应数据量飞速膨胀的历史趋势，我们迫切需要海量数据获取技术（Data Capture）、海量数据储存技术（Data Curation）、海量数据分析技术（Data Analysis）和数据可视化（Data Visualization）的根本性突破。吉姆·格雷认为，眼下的技术工具仍然不能很好地胜任这一新的研究使命，我们需要变革研究工具才能更好地迎接数据社会的到来。

吉姆·格雷在演讲中提出了超大规模（Mega-scale）、微细规模（Mili-scale）等概念来描述数据时代的特征，并且强调了数据爆炸对传统研究工具的挑战和颠覆。至此，关于大数据革命的思想已经非常清晰，吉姆·格雷可谓这一思想的先驱，而第四范式则可被视为大数据革命的思想雏形。

大数据正式问世

美国的《自然》（Nature）杂志正式推广了大数据这个概念。2008年9月，《自然》杂志发表了一份以大数据为主题的专刊，标志着大数据这个概念受到高度重视，并迅速成为科学和创新领域的前沿话题。

这份命名为《下一个谷歌》（The next Google）的专刊报告提出：10年前，在车库中进行创新的谷歌发明了搜索引擎，给人类社会带来了10年巨变；那么10年后会有什么样的新发明来改变又一个10年呢？作者询问了许多专家、研究员、商业人士，得出的结论非常一致：将世界的一切物质和信息集合起来组成一个巨大的数据库，打破虚拟和现实的边界，这将是世界可以期待的最大变革。大数据革命带来的想象或许会非常惊人，它将是下一个10年可以与谷歌搜索引擎相媲美的创新。

《自然》杂志对大数据的论述和预言正在由猜想变为现实。该专刊形容数据爆炸性增长的新术语——大数据也开始频繁地出现在各种报告和演讲中。

大数据席卷全球

在《自然》杂志提出关于大数据的简单概念后，全球知名咨询公司麦肯锡则首次全面、系统地揭示了大数据革命的内在逻辑，并对其影响力进行了定量评估。2011年5月，麦肯锡研究院发布了报告《大数据：下一个创新、竞争和生产力的前沿》。这篇报告引起了企业界、政府、学术界对大数据革命空前的重视和讨论。基于大数据的创新案例开始迅速增加，大数据开始备受关注。这也是专业机构第一次全方面地介绍和展望大数据。

2014年5月，美国白宫发布了2014年全球大数据白皮书的研究报告《大数据：抓住机遇、守护价值》。报告鼓励使用数据以推动社会进步，特别是在市场与现有的机构并未以其他方式来支持这种进步的领域；同时，也需要相应的框架、结构与研究，来帮助保护美国人对于保护个人隐私、确保公平或者防止歧视的坚定信仰。

任何企业都不能坐视大数据革命带来的战略性转型与增长的机遇，任何政府都不能低估大数据革命产生的全局性冲击和影响。各类组织都要充分调整自身的发展策略，以保持在大数据环境中的创新力和竞争力，主要政策重点包括：把自身拥有的数据作为战略性资产进行管理；培养数据科学家和数据工程师，必要的情况下可以为整个组织设置首席数据官；努力寻找数据驱动型的业务实现增长；政府要积极推动公共部门数据开放，并重视数据基础设施的供给。

1.1.3 大数据的来源

大数据的产生方式、存储载体、访问方式、表现形式等都不同于传统数据。大数据主要来源于以下几个方面。

机器产生数据

随着物联网技术的发展，越来越多的机器上、环境中配备了连续监测周围情况的传感器。传感器可以感知和传输这些不断生产的数据，即使对这些感知数据进行筛选，仅保留部分有用数据，日积月累的数据量也是惊人的。这些物联网设备源源不断地产生与人相关的衣食住行信息。物联网发展至今已经累积起庞大的数据。据统计，2009年全球数据流达80万PB（1PB大约等于100万GB），预计2020年将达35ZB（1ZB大约等于1万亿GB），包括家庭数据、公共数据、个人数据以及商务数据。此外，移动互联网出现后，移动设备的传感器收集了大量的用户数据，也成为大数据的一个重要来源，如智能手环可以记录用户运动数据、生理数据等。

人类行为产生数据

由于社交媒体和“互联网+”的发展，人类在互联网上产生的数据越来越多。例如，QQ、微信聊天数据，微博、朋友圈数据，以及相应的地理位置、天气等状态数据。进入社交网络时代后，互联网行为主要由用户参与创造。大量互联网用户创造出海量的社交行为数据，揭示了人们的行为特点和生活习惯，这些数据是过去未曾出现的。计算机产生的数据可能包含关于互联网用户行为的有趣信息，可以提供对他们的需求和愿望潜在的有用认识。例如，电商崛起产生了大量交易数据，包含支付数据、查询行为、物流运输、购买喜好、点击顺序、评价行为等；传统的互联网入口转向搜索引擎之后，用户的搜索行为和提问行为聚集了海量数据；用户在网上的每个点击及时间都会给服务提供商留下浏览痕迹，服务提供商利用这些痕迹可以对用户模式进行仔细分析，并且细分市场来进行有效的市场营销和推广，最终根据数据为用户提供更多的个性化服务。

分享集中数据

过去，一些记录以模拟形式存在，或者以数据形式存储在本地，没有开放给互联网用户，如音乐、照片、视频、监控录像等影音资料。现在，这些数据共享到了互联网上。例如，Facebook每天有18亿张照片上传或被传播，形成了海量的数据。数据变“大”的最重要推手是云计算。数据被搬到了“云”上之后，更容易被收集和获得。过去那种各自分割存储的数据往往不具备太大价值，只有不同领域打通共享，数据金矿才能呈现眼前。

1.2 大数据的哲学本质

早在古埃及，人们用数据来计量财富和记录日常生活。文艺复兴之后，数据又被用于描述物理现象和自然规律。随着大数据时代的来临，数据从作为事物及其关系的表征走向了主体地位，构成了一个独立的客观数据世界。

大数据时代，万物皆可被数据化，世界的一切关系皆可用数据来表征，一切活动都会留下数据足迹，世界就是一个数据化的世界。大数据通过“量化一切”实现物理客观世界的数据化，这将彻底改变人类认知和理解世界的方式，将给我们的世界观、认识论、方法论和价值观带来深刻变革。

1.2.1 大数据与世界观

古希腊哲学家毕达哥拉斯曾提出过“万物皆数”的观点，由此将表征事物及其关系的数据符号上升为具有本体论意义的万物始基。在古老的中国，“数”也被当作揭示和解释宇宙奥秘的工具，甚至被当作世界的本质。例如，最早的龟壳占卜以及由此发展出来的易经、阴阳五行八卦等均描述了世界的基本规律。还有“道生一，一生二，二生三，三生万物”的哲学观点，将数字和世界紧密结合，描述了世界起源、发展规律等理念。

进入大数据时代，我们发现宇宙中的一切事物之间都存在具有时空一致性的同构关系。这意味着任何事物的属性和规律只要通过适当编码，都可以通过统一的数字信号表达出来。在计算机世界里，信息全部使用数字“0”和“1”来表达。“0”和“1”，再加上逻辑关系，就构成了全部世界。因此，大数据是描述事物同构关系的数字模型，是客观世界中事物的多样性和关联性在计算机世界中的表达，以0、1编码，同时具有可逆性，如图1-2所示。

图1-2 物理世界、人类社会和数据世界间的关系

大数据通过“量化一切”而实现世界的数据化，这将彻底改变人类认知和理解世界的方式，带来全新的大数据世界观。并且，凭借云计算将整个人类互联或物联起来，形成一个仿真的世界模型，这个模型是多元的、连续的、实时的、精准映射的、异构的、非结构化的。大数据是一个记载人类行为和物理世界特征的数字写真，与客观世界同构、同步。随着信息技术的进一步发展，大数据将无限接近客观世界。

1.2.2 大数据与认识论

大数据所涉及的数据量如此巨大，远远超出了传统技术的处理能力，必须引入新的科学工具和技术手段才能够进行处理。当前的大数据技术革命正在开启一次重大的时代转型，人们通过这种收集和分析海量数据的新技术获得新认知、创造新价值，帮助我们改变认知和理解世界的方式，为深入科学认识提供了新手段。

大数据认识论与传统认识论

首先，大数据认识论相对于传统认识论，认识主体发生了变化。传统认识论的主体是个人，或者基本相似的共同体。而大数据认识论中认识主体高度分化并社会化，认识的意向方和实施方分离，分为甲方和乙方，同时认识的动机和目的也发生了相应变化。大数据时代，“面对海量信息，任何人都只需要对自己有益和有用的信息”成为了认识的出发点。

其次，知行合一。长期以来，知行之争不断。在大数据认识论中，知与行开始结合起来，拥有技术的个人将能更好地获取信息。

再次，求真求效。传统认识论的核心在于求真，20世纪的“大科学”甚至是为了科学而科学地求真。而在大数据认识论中，功利目标进一步彰显并且贯穿于认识的各个环节。

最后，无论是认识，还是产业实践，实现数据社会与现实社会的有机融合、互动以及协调才是大数据的真正目的。

大数据相关性与因果性

近现代科学最重要的特征是寻求事物间的因果关系，无论是唯理论，还是经验论，区别只在于寻求因果关系的方式不同。然而，正在兴起的大数据却提出了超越因果性的问题。大数据学者们认为，追求因果性是小数据时代的产物，也是小数据时代的理想和目标。而大数据重视相关关系，并试图通过变量之间的依随变化找寻它们的相关性，从而不再一开始就把关注点放在内在的因果性上，这是对因果性的真正超越。

根据唯物辩证法的基本原理，世界是普遍联系的，联系是有条件和多样的。大数据的相关关系分析法更准确、更快，而且不易受偏见的影响。建立在相关关系分析法基础上的预测是大数据的核心。因此，因果关系的分析依赖于人，而人容易根据主观感受进行感性或理性分析，因此或多或少地会产生偏见。大数据作为一种手段可以让人类更精准地把握事物联系的多样性，从而提升人类的逻辑分析水平。

但是，大数据并不排斥传统的因果规律，它用相关性补充了传统认识论对因果性的偏执，用数据挖掘补充了科学知识的生产手段，用数据规律补充了单一的因果规律，实现了唯理论和经验论的数据化统一，形成了全新的大数据认识论。

1.2.3 大数据与方法论

人类认识和研究客观世界有三种方法：基于模型的方法、基于经验的方法和基于大数据的方法，分别对应白盒系统、灰盒系统和黑盒系统，如图1-3所示。

基于模型的方法是了解和探索客观世界最便捷的方法，它在客观世界和科学理论之间架起了一座桥梁，通过系统建模来分析研究对象的各个侧面。系统建模需要抓住对象的本质属性和要素，对对象进行准确的系统描述。因此，系统模型源于实际又高于实际，比客观对象简单、抽象，是认识问题的飞跃和深化。

图1-3 人们认识和研究客观世界的三种方法

“经验”作为认识论的一个概念，是指与理性认识相区别的一个认识阶段、认识形式，是感性认识。经验论者一般强调归纳和分析。对于归纳，不同的经验论者有着不同的看法：有人认为归纳是从个别到一般；有人认为归纳所得的结论只有或大或小的或然性；有人认为归纳推论是从个别到个别，即从许多个别的事例推到更多的事例。对于演绎，经验论者并不完全否定，只是他们把演绎放到次要的地位。

相对于传统的数据方法论，大数据方法论有两大根本改变。

第一，大数据让人们脱离了对建模和算法的依赖，数据本身即可帮助人们贴近事情的真相。在大数据出现之前，计算机科学高度依赖模型和算法。要得到精准的结论，需要建立模型来描述问题，需要设计算法来理顺逻辑、理解因果，从而得出接近现实的结论。一个问题能否较好地被解决，取决于建模是否合理、算法设计是否精妙。大数据的出现则彻底改变了人们对建模和算法的依赖。如图1-4所示，假设解决某个问题可以使用算法A 和算法B，在少量数据中运行时，算法A的结果明显优于算法B，就算法本身而言，算法A解决该问题更高效。然而，人们发现，当数据量不断增大时，算法B的结果优于算法A。这个发现给计算机学科及计算衍生学科带来了里程碑式的启示：当数据量越来越大时，数据本身（而不是研究数据所使用的模型和算法）保证了数据分析结果的有效性。即使缺乏精准的算法，只要拥有足够多的数据，也能得到接近事实的结论。数据也因此发现而被誉为新的生产力。

图1-4 数据量对算法优劣性的影响

第二，大数据强调事物间的相关关系，弱化了因果关系，成为人类认识世界的新工具。对于客观世界的认知，人们往往期望在不需要了解具体因果关系的前提下可以直接利用其结果。如图1-5所示，望远镜解决了远处看不到的问题，让我们能够观测遥远的太空；放大镜解决了小处看不清的问题，让我们可以明察秋毫；显微镜解决了微处看不见的问题，让我们可以观察微观世界；大数据将人类社会数据化了，并改变了人类探索世界的方法，从而带来了思维方式与科学方法论的革命。

图1-5 人类认识世界的新工具：大数据

1.2.4 大数据与价值观

随着大数据的兴起，数据从原先仅具有符号价值逐渐演变为同时还具有经济价值、科学价值、政治价值等诸多价值的重要资源，从而带来了数据价值本质的根本性变化。

第一，数据成了新兴财富，具有重要的经济价值，从而引发财富价值观的变革。在传统的价值观念中，土地、物品、能源、劳动力等看得见又摸得着的实体才被看作财富的象征，而数据只是一种符号、一种存储记录或计算财富的工具。但在大数据时代，数据不仅是财富的记录和标志，而且自身也成为了一种新兴财富，即数据财富。例如，广告服务提供商可以通过分析社交媒体公司的用户数据，获取用户的兴趣偏好、职业、年龄等特征，从而可以进行精准的服务推荐、广告投放等。这时候数据就可以带来巨大的收益，数据本身也就具有了价值。同样，我们可以把不涉及用户隐私的数据进行数据交易，这时数据就成为了一种正常的商品，通过共享创造更多价值。例如，贵阳的大数据交易所、上海的数据交易中心等都将带来更多机会。大数据让我们从实体经济的狭隘思维中解放出来，带来全新的就业方向、产业布局、商业模式和投资机会，创造出“点数成金”的财富神话。

第二，数据成为人类认知世界的新源泉，蕴含着丰富的科学认知价值。大数据是一种重要的科学认识工具，它将数据化从自然世界延伸到人类世界，原先只能进行定性研究的人类思想、行为，如今逐渐被数据化。

第三，大数据带来了开放、共享的价值理念。大数据要求打破数据隔离和数据孤岛，实现数据资源的开放、共享。数据的开放和共享，特别是政府数据的公开让信息更加对称，让一切事物和行为都暴露在公众面前，由此带来了大数据时代的自由、公平与公正。

第四，大数据可以优化资源配置。利用大数据实现资源的高效利用，提高人们的生活水平，这也是大数据应用的重要落地点。例如，滴滴出行可以通过分析历史订单和交通状况，并利用大数据分析实时综合调度快车、专车、出租车等出行资源，实现全局的交通资源优化。这就大大方便了用户的交通出行，减少了司机的寻客时间，避免了资源浪费和过度竞争，提高了交通资源的使用效率。房地产商利用大数据分析价值洼地，金融企业利用大数据建设征信系统、降低坏账率，广告行业利用大数据分析用户行为、进行广告的精准投放等，都是优化资源配置的体现。因此，在各行各业合理地利用大数据，充分发挥大数据的价值，可以避免资源浪费，提高效率和体验，实现整体的资源优化配置。

1.3 大数据技术框架

1.3.1 大数据处理系统综述

对大数据的高效处理和分析，是实现智慧化应用的核心关键。这就要求数据处理系统必须具备稳定可靠、同时支持实时处理和离线处理多种应用、支持多源异构数据的统一存储和处理等功能。这些需求都对传统的数据处理系统提出了挑战。目前，业界主流的大数据处理系统基本都采用了图1-6描述的架构设计。

图1-6 大数据处理系统架构

其中，存储部分包括分布式文件系统和各类非结构化数据库，负责数据调度和数据持久化，为执行引擎提供数据来源；资源管理部分解决硬件资源的抽象和调度管理问题，以提高硬件资源的利用效率；执行引擎部分将下层提供的数据资源和硬件资源整合成通用的计算单元，进行分布式计算，通常可支持的计算类型包括流式处理、数据查询、机器学习和图处理等。其中，流式处理和图处理也可以绕过执行引擎，直接使用硬件资源进行专用计算，以提高运算效率。

1.3.2 大数据平台基础

大数据处理对设备的存储和计算能力提出了非常高的要求。因此，大数据平台的基础部分就要解决硬件资源的抽象和调度管理问题，以提高硬件资源的利用效率，充分发挥设备的性能。

虚拟化

虚拟化是对硬件资源的抽象，对用户隐藏了真实的计算机硬件。这种虚拟化通过虚拟控制程序隐藏计算机平台的实际物理特性，为用户提供一个抽象、统一的计算环境，不仅可以降低硬件系统的成本，而且可以增强安全性和可靠性，充分发挥计算设备的性能，以满足大数据处理对设备的存储和计算能力要求。

经典的虚拟化工具包括KVM、Xen和Virtual Box，相对应的虚拟控制程序可以运行在主机操作系统（Host OS）上，也可以直接脱离操作系统独立运行在硬件之上。近年来，以Docker为代表的虚拟化容器的出现，使硬件抽象更加轻薄灵活、方便部署。还有各种专用Unikernel，它们没有操作系统由于软件层级抽象而带来的复杂性，架构简单且安全高效，使虚拟化技术在高性能和安全领域有了一席之地。

在云计算领域，目前对虚拟机集群的管理主要还是依靠Open Stack，它提供了一个实施简单、支持大规模扩展、标准统一的虚拟机管理平台，包括的组件有虚拟机管理（Nova、Glance）、存储管理（Cinder、Swift）、网络管理（Neutron）、物理机管理（Ironic）等。Open Stack通过各种互补的服务，可以方便地管理虚拟机群，提供基础设施即服务（Iaa S）的解决方案。

资源调度

如何充分利用底层的存储和计算资源，并把它们合理分配给上层应用，是大数据处理系统中的全局资源管理器来负责解决的问题。这个全局资源管理器负责资源的统一管理和统一调度，所有接入系统的应用都要首先向全局资源管理器申请资源。申请成功后，各应用自身的调度器可以再决定资源交由哪个任务来具体使用。这就是整个大数据处理系统的双层调度机制，第一层由全局资源管理器完成，第二层由应用自身的调度器完成。这种双层资源调度机制可以使资源的使用更加均衡和合理，从而达到整个系统负载均衡的目的。

目前流行的资源调度产品有Apache Mesos和Hadoop YARN，以及容器专用的资源管理器Docker swam和Kubernetes等。其中，Mesos进行第一层的资源统一管理与调度，做粗粒度的资源分配，将大部分调度任务授权给了各个应用；YARN、Docker swam和Kubernetes则还实现了第二层的资源调度，支持对分配到的资源进行更细粒度的分配。它们由于都对第一层调度进行了特定优化，因此相互之间并不能通用。

资源调度需要考虑到资源的实时使用情况，需要对云计算环境中的资源进行实时监控和管理。因此，通常资源调度会与虚拟化相结合，形成综合部署方案，直接部署在集群上。

1.3.3 大数据存储系统

分布式文件系统

文件系统是操作系统的一个重要组成部分，通过对操作系统所管理存储空间的抽象，屏蔽对物理设备的直接操作和资源管理。分布式文件系统（Distributed File System，DFS）是指文件系统管理的物理存储资源不一定直接连接在本地节点上，而是通过计算机网络与节点相连。分布式文件系统采用客户机/服务器的设计模式，一个网络可以包括多个供多用户访问的服务器。另外，对等特性允许一些系统同时扮演客户机和服务器的双重角色。

常见的分布式文件系统有GFS（Google File System）、HDFS（Hadoop Distributed File System）、Lustre、Ceph和Fast DFS等。它们基本都参照了谷歌关于GFS的论文进行设计开发，分别适用于不同的领域。它们都不是系统级的分布式文件系统，而是应用级的分布式文件存储服务。

No SQL数据库技术

No SQL（Not Only SQL）是对不同于传统关系型数据库的数据库管理系统的统称。No SQL数据库用于传统关系型数据库无法适用的场景，如大数据的存储。由于多种类型的数据存储不使用SQL作为查询语言，其数据的存储可以不需要固定的表格模式，也可以避免使用SQL的JOIN操作，因此无需多余操作就可以横向扩展。

No SQL数据库可以分为键值存储数据库（Cassandra、Dynamo、Couch DB等）、文件存储数据库（Mongo DB、Couch DB、Document DB等）、列式存储数据库（Cassandra、HBase、Hypertable等）、图存储数据库（Neo4j、Orient DB、Flock DB等）、对象数据库（db4o、Object DB、JADE等）。不同的产品有着各自的特性，适用于不同的场景。

1.3.4 大数据计算模型

Map Reduce

Map Reduce是一种分布式计算模型，它将大批量的数据处理工作分解执行，然后再将执行结果合并成最终结果。一项Map Reduce作业通常会把输入的数据集切分为若干独立的数据块，由Map任务以完全并行的方式执行。模型会对Map的输出结果进行排序，然后把这些输出结果输入给Reduce任务。在此过程中，作业的输入和输出都会被存储在文件系统中。Map Reduce模型会负责任务的调度和监控，以及重新执行已经失败的任务。对Map Reduce流程的形象描述如图1-7所示。

Map Reduce计算模型的经典实现有Apache Hadoop、Google Map Reduce。按照时间顺序，运行流程分别是输入分片（Input Split）、Map阶段、Combiner阶段、Shuffle阶段和Reduce阶段。

图1-7 Map Reduce流程的形象描述

图计算

分布式图计算将大型图的各种操作封装成接口，让分布式存储、并行计算等复杂问题对上层透明，从而使工程师把焦点放在与图相关的模型设计和使用上，而不用关心底层的实现细节。这种分布式图计算框架的实现需要考虑两个问题：第一是图切分的优化；第二是图计算模型的选择。图的切分包括点切分和边切分两种方式。图计算基本上都遵循分布式批同步（Bulk Synchronous Parallell，BSP）计算模式。

目前比较常见的图计算框架有Pregel、Graph Lab、Bagel和Spark Graph X。它们都是基于BSP模式的，由一系列的超级步组成。在每个超级步内，框架会调用每个顶点的用户自定义函数。该函数定义了在该超级步内需要进行的计算，可以读入前一个超级步发送给该顶点的消息，并产生下一轮的迭代消息发送给其他顶点，同时修改该顶点及其边的状态。

流式计算

流式计算处理按照时间顺序无限增加的数据序列，这种数据序列也可以被看成历史数据和不断增加的更新数据的并集。流式计算对数据处理的实时性要求严格，而对精确度要求相对宽松。这是因为此类应用有一个共通的基本理念：数据的价值会随着时间的流逝而降低，数据被处理得越及时，其结果就会越有价值。流式计算在数据到达后直接进行计算并及时反馈结果，响应时间一般在数百毫秒到数秒之间。

流式计算的实现包括Spark Streaming、Storm和Samza等。其中，Storm在事件处理与增量计算方面表现突出，能够以实时方式根据不断变化的参数对数据流进行处理。Spark Streaming不像Storm一次一个地处理数据流，而是在处理前按时间间隔预先将其切分为一段一段的批处理作业。

内存计算

内存计算将数据存放在服务器的内存中来加速数据处理，主要适用于数据访问密集型的应用，用于解决传统计算模式在处理大数据时遇到的I/O性能瓶颈问题。在内存计算模式下，所有的数据在初始化阶段全部加载到内存中，数据及查询的操作都在高速内存中执行，CPU直接从内存读取数据，进行实时计算和分析，因而减少了磁盘数据访问，降低了网络与磁盘I/O的影响，大幅提升了计算处理的数据吞吐量与处理的速度，减少了原本占大量计算资源的I/O开销。内存计算使以计算为中心的计算模式转变为以数据为中心的计算模式，迎合了大数据时代数据处理的要求。

近些年出现了众多此类内存计算的框架模型，包括Spark RDD、Piccolo、Pregel和Storm等。在具体应用中，内存计算模型并不会单独存在，它们大都是与本小节描述的其他几种计算模型结合使用。例如，使用Spark Streaming和Piccolo处理面向迭代式和交互式的数据批处理应用，Pregel和Hadoop适用于基于分布式内存计算的图数据处理框架，Spark Streaming和Storm适用于基于内存计算的实时数据处理系统。

新型计算

最新出现的计算模型，如Spark、Dataflow/Beam和Flink等都是以上4种模型的一个综合体，为用户提供以流式或批量模式处理海量数据的能力。这类模型通常被称为第四代的计算引擎，主要实现对有向无环图（DAG）和流式计算的支持，并且强调实时计算。这些模型都直接介入了内存管理，同时支持流式和批处理。例如，Flink包括进行批处理的Data Set和进行流式处理的Data Streams；Spark批处理有RDD；流式处理有基于Microbatch实现的DStream；还有基于Dataflow实现的Tensorflow大规模机器学习框架，在机器学习领域有着广泛的应用。

1.4 大数据发展趋势

大数据已经成为当前信息技术产业中备受关注的热点领域。大数据技术将会在云计算、物联网等多种技术的推动下快速发展，成为引领信息技术产业繁荣发展的核心引擎，成为提升机构和企业核心竞争力的有力工具。大数据产业目前也处于蓬勃发展的萌芽期和机遇期，正在由概念化走向价值化。随着大数据产业链的不断完善，人们将会对大数据有更深层次的认识，并最终将大数据的核心价值转化为推动社会进步的重要力量。

1.4.1 大数据的技术发展趋势

智能化是未来走向

全球的信息化发展正在经历从数字化向智能化的提升，这将是未来10年信息产业的发展趋势之一。在未来的智能化时代，无论是传统产业，还是新兴产业，如食、住、行、游、购及城市的配套管理等领域无一不在逐渐具备智能化的要素。智能化描述了大数据所产生的创新价值如何与人类交互并深入生活之中，人的思维与新科技将会遇上前所未有的碰撞。人类最终的价值将取决于自身和智能化技术的配合。对数据的价值分析和应用创新支撑着智能化应用的发展，智能化是大数据应用的必然之路。同时，人机协作、人机一体化也将是大数据发展的未来走向。

例如，在对经济的持续繁荣和社会的稳定有着非同寻常意义的工业领域，无论是德国工业4.0、美国工业互联网，还是中国制造2025，其核心要素都包括了信息物理系统（CPS）、物联网（IOT）、云计算、数据分析等。智慧工厂是智能工业的一个关键特征，可以实现人机的有效交互。生产过程的自动化，产品质量监控的智能化，靠的就是物联网和数据提供的在数据采集、分析、应用上的支撑。

在城市规划和运营、应急管理、车联网等应用场景中，分析车流量、道路交通情况的实时变化，需要云计算、大数据的流式计算等技术来支持系统能够对不间断传入的事件进行快速响应，响应时间尽可能接近于实际时间。

对于人工智能学科而言，Alpha Go在围棋领域的成功是一座新的里程碑。业界普遍认为，人工智能已经走过了从0到1的阶段，接下来的第二阶段将会是从1到N的爆发。这个阶段，大数据技术和机器学习的发展将使人工智能算法的精度大大提高、应用场景会更加丰富，并且还将推出大量针对个性化服务的人工智能产品，从而掀起人工智能的发展热潮。

可视化加速大数据技术普及

大数据虽然已经成为信息技术产业的热点，但是距离让普通老百姓无时无刻都能体会到大数据带来的红利还有一段路要走。究其原因，主要是因为大数据是一门复杂深奥的专业信息技术，非专业人士无法在短时间内通过直观体验来感受到它的价值和魅力。人类依靠自己的感知和认知能力全方位地获取信息，而在多维信息空间中认识问题，就需要可视化技术将人脑和现代计算机两个最强大的信息处理系统联系在一起，有效利用可视界面增强人类对信息分析和处理的能力。有研究显示，利用可视化图表将会以10倍于文字的速度将初学者带入一个新的领域。因此，大数据的可视化将会在很大程度上提高人类对数据本身的认知能力，协助我们在对数据进行分析时能够更加方便、快捷。例如，在对数据进行深入分析时辅以各种各样的数据可视化工具，将杂乱无章的海量数据形象化，可以拓展数据分析师们的视野，激发分析师的形象思维，最大限度地发挥其创造性；在对大数据进行分析结果展现时，可视化技术将能更清晰、直观地传递数据中隐藏的信息，让非技术专业人士理解大数据价值，为科学发现、医疗诊断、专家决策等提供依据。虚拟现实也将在实时计算、3D重构等信息技术的支撑下迅猛发展，成为数据应用的重要趋势之一，实现人与人之间的经验分享。数据可视化技术的发展，将极大地推动大数据这只“旧时王谢堂前燕”早日“飞入寻常百姓家”。

开源模式推动大数据发展

IDC预测，未来5年在基于云平台的大数据解决方案上的花费将是本地部署解决方案费用的4倍之多。私有云、公有云相结合的混合数据云是未来趋势，混合部署将必不可少。因为大型企业不可能放弃现有的结构化的数据基础设施，Oracle、IBM和微软的系统的结构化数据正在支撑大多数大公司的运作。大部分企业会将现有的系统融入混合系统，同时吸收非结构化的数据和外部数据。而选择使用开源产品对于避免专有架构的锁定非常重要，会大大降低系统迁移和升级过程中的成本。

开源成就了大数据。现有的大数据核心技术多源自于开源模式，如分布式存储、计算框架和操作系统等。拥抱开源，全球开放资源深度合作是大数据技术快速发展最显著的特点。Linux平台是一切开源应用的基础，从Hadoop到各种No SQL数据库，几乎所有的开源部件都首选Linux平台，各种硬件平台也全面支持Linux。一方面，开源项目由全球开发者共同开发和维护，大家互助互利，共同解决技术问题，不断提高开源系统的性能，构建出各种适用于不同规模企业和不同业务场景的大数据处理系统。因此，借助于开源项目，工程师们可以快速找到处理大数据的解决方案并搭建处理架构，将更多的精力放在业务逻辑方面，而不是解决技术问题。另一方面，开源云计算软件使企业可以在花费很少资金的情况下满足云计算需求，而应用程序代码的透明和开放标准使众多开源程序可以彼此联系，让企业可以构建一套可靠、整合的云计算解决方案。另外，机器学习算法的开源代码大量涌现，这些性能优异的代码使工程师们仅仅准备自己的业务数据就可以快速分析数据和进行效果实验。因此，各个开源项目以其创新精神和很短的发布周期推动着大数据新技术的发展。开源模式已成为技术创新的主要途径，是企业和技术人员关注的热点。大数据有极高的技术和资金门槛，全球真正有实力研发和提供全链条大数据服务的公司只有少数几个巨头，正是软件、硬件、云技术的开源使数据的单位成本大大减低。

但是，我们同时也应该非常清醒地认识到开源软件有其先天不足，如更新频繁、缺少代码安全审查环节等问题。而大数据不仅是一种信息技术应用模式的创新，更是涉及互联网关键资源的控制与争夺的较量。跨国企业在大数据领域的咄咄逼人和各国政府对大数据发展的深远谋划，对我国政治、经济、科技和国家安全都形成了严峻的挑战。因此，使用自主知识产权的信息化产品和服务对保护国家信息安全有重大意义，有助于我们打破国外企业对大数据服务的新一轮垄断。要对最终的系统拥有自主知识产权，同时处理好所使用开源技术的知识产权问题。这就需要我们对开源软件进行符合我国应用特点的深入技术优化，研发自主可控、安全可信的大数据产品，坚持核心技术创新产业化，专利标准化，标准推进市场化。

大数据生态环境逐步完善

大数据的生态链贯穿数据的整个生命周期，即从数据的采集到存储，再到分析和挖掘，直至最终的呈现与应用。随着大型企业和政府对大数据的重视及支持，一些在垂直领域经营多年的行业软件开发商也开始逐渐向大数据平台转型，针对某些数据丰富的行业产出一些标杆性的行业解决方案。目前，围绕数据生产、开发、服务和流通的大数据生态系统正在构建。在生态链的各个环节，除了传统的IT厂商之外，一些新兴企业也纷纷涌现。在大数据产业的数据库、云计算等基础设施领域，传统的IT厂商具有较大的先发优势，形成了一个相对封闭的发展格局。随着服务器等硬件技术和相关软件技术的进步、软件应用环境的逐步发展成熟以及应用要求的不断提高，虚拟化由于具有提高资源利用率、节能环保、可进行大规模数据整合等特点而成为一项具有战略意义的新技术，并且已成为推动诸多企业创新的引擎，其中不仅包括新兴企业，也包括成熟企业。而在数据可视化、安全、应用等新兴领域，新兴创业公司则试图通过新技术和新方法来实现新的模式。在各个行业中，无论是企业，还是政府机构，都应该发挥各自的优势，相互合作，从数据的生产和存储到数据的分析和消费，共同建立并维护一个统一、整合、行业互通的大数据环境，保障并促进我国大数据生态系统健康发展。

1.4.2 大数据的应用发展趋势

随着大数据技术的普及，大数据的应用领域也在不断扩展。从最开始在互联网、金融以及健康领域的应用，发展到了城市、企业和工业等方面的应用。未来大数据必将会应用到社会治理和民生领域。创新社会治理，是我国应对社会转型、化解社会矛盾、协调利益关系、维护社会秩序所面临的一项重大战略任务。大数据技术可以通过对海量数据的快速收集与挖掘，深度分析当前社会治理的特点，并对大数据时代下的社会治理给出科学的决策。而基于大数据的社会治理与民生也是息息相关的，如智慧城市通过对城市核心系统各项关键信息的整合和分析，对民生、环保、公共服务等需求作出智能响应。大数据取之于民，理应用之于民。因此，大数据必将催生出一大批有益于国民经济发展的应用。例如，交通领域依托大数据技术处理实时采集的交通数据，预测拥堵区域，规划车辆行驶路线，制定交通调度方案；医学领域需要借助大数据技术强大的分析功能，帮助医生进行疾病诊断、药物开发，提高病人的满意率；金融行业利用大数据安全技术加强金融机构的内部控制，防范和化解金融风险等。

大数据技术推动经济的创新式发展

在信息社会，数据高速增长并成为一种十分重要的生产资料，经济价值也越发突出，促使大数据技术不断影响生产技术和生产效率，不断对经济发展模式产生影响，为经济、产业的创新式发展提供了更多的可能。例如，在电子商务零售行业，企业通过对消费者的网络行为记录进行分析，可以准确预判消费者的消费行为、消费心理等极具价值的信息，并推送相应的产品或服务；在电信领域，大数据技术可实现对用户习惯的分析，促使运营商有针对性地制定市场营销计划或开发出更多全新的商业模式和服务。

大数据技术为民生建设提供支持

大数据技术已成为改变社会民生的重要技术支撑。在医疗卫生、食品安全、教育、交通等民生领域，大数据推动着资源交互共享、服务一体化进程，深刻改变了城市居民的生活。例如，在医疗卫生领域，通过建设全民医疗健康公共服务平台、电子诊断档案库等，形成医疗健康大数据资源，可以支撑在线医疗、引导个性化健康服务；在食品安全领域，针对食品安全和管理的需求，利用大数据技术可建立食品安全风险监测平台，专业负责食品安全大数据的收集、整合、分析与共享，对涉及食品安全的相关数据及时分析、跟踪、检测和评估食品安全状况；在教育领域，大数据可以分析微观、个体学生状况，用于调整教育行为与实现个性化教育。

大数据技术帮助政府提高治理水平、决策效率

大数据使共享成为可能。政府既有数据库，又可以实现高效互联互通，极大地提高政府各部门间的协同办公能力，提高为民办事的效率，大幅降低政府管理成本。最重要的是为政府决策提供有力的支持，不断地推动智慧城市向更加智慧、更加科学、更加高效的目标迈进。通过大数据提升预测和决策的效率，大幅度改善其速度和精确度，提高危机应对的能力和公共服务水平。

大数据技术使公共管理更加科学合理

大数据在公共事务管理中也发挥着越来越重要的作用。例如，人口聚集给城市带来了交通、医疗、建筑等各方面的压力，需要城市管理者更合理地进行资源布局和调配，它需要借助大数据工具来完成。通过运用大数据，可以降低医疗成本，同时又提高医疗质量。在城市安防管理方面，当前包括火灾预防、保险、流行病控制、公共场所管理等，都有大数据的成功运营范例。而未来随着大数据技术的发展，基于大数据的城市管理毫无疑问将成为一种常态。

第2章

大数据的云计算基础

2.1 虚拟化技术

2.1.1 虚拟化的概念

“虚拟化”最早出现在20世纪60年代的IBM大型机系统中，虚拟化技术的逐渐流行则始于20世纪70年代。这些大型机通过一种名为虚拟机监控器（Virtual Machine Monitor）的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机（Virtual Machine）实例。随着近年多核系统、集群、网格以及云计算的广泛部署，虚拟化技术在商业应用上的优势日益体现，不仅降低了硬件系统的成本，还增强了安全性和可靠性，因而获得日益广泛的运用。

虚拟化是个抽象的概念，从广义上讲是对资源的抽象。在计算机科学领域，它代表了对计算资源的抽象，对用户隐藏了真实的计算机硬件（但并不局限于虚拟机的概念）。例如，将物理内存虚拟化可以抽象出一段连续可用的地址空间，以保证即使物理内存不足，程序也能正常运行；而实际上，进程的代码和数据可能是被分割成多个碎片和段，散落在内存各处，甚至被送至交换区。

2.1.2 虚拟化技术分类

广义上的计算机虚拟化有三大类。

（1）平台虚拟化（Platform Virtualization），针对硬件平台和操作系统的虚拟化。

（2）资源虚拟化（Resource Virtualization），针对特定系统资源的虚拟化，如内存、存储、网络资源等。

（3）应用程序虚拟化（Application Virtualization），包括仿真、模拟、解释技术等。

我们通常说的虚拟化主要是指平台虚拟化，也是本书所要重点讲述的内容。这种虚拟化是指通过虚拟控制程序来隐藏计算机平台的实际物理特性，为用户提供一个抽象的、统一的计算环境。虚拟控制程序可以运行在主机操作系统上，也可以直接脱离操作系统独立运行在硬件之上，如VMware的ESX产品。

平台虚拟化技术可以分为以下几类。

全虚拟化（Full Virtualization）

全虚拟化是指虚拟机模拟了完整的底层硬件，包括处理器、物理内存、时钟、外设等，原始硬件设计的操作系统或其他系统软件完全不做任何修改就可以在虚拟机中运行，操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行。全虚拟化完整模拟硬件的方式提供全部接口，包括一些特权指令的模拟执行。

超虚拟化（Par Virtualization）

超虚拟化通过修改客户机的部分特权访问代码来实现与虚拟机监控器的直接交互。在超虚拟化虚拟机中，部分硬件接口以软件的形式提供给客户机操作系统，通过虚拟机监控器提供的Hypercall调用的方式来提供。

硬件辅助虚拟化（Hardware-Assisted Virtualization）

硬件辅助虚拟化借助硬件的支持来实现高效的全虚拟化。客户机和主机的执行环境自动地完全隔离开来，客户机有自己的“全套寄存器”，可以直接运行在最高级别，能够执行修改页表的汇编指令，以此来提高运行效率。Intel-VT和AMD-V是目前x86体系结构上可用的两种硬件辅助虚拟化技术。

部分虚拟化（Partial Virtualization）

部分虚拟化只模拟部分底层硬件，客户机操作系统不做修改是无法在虚拟机中运行的，其他程序可能也需要进行相应的修改。

操作系统级虚拟化（Operating System Level Virtualization）

操作系统级虚拟化是一种在服务器操作系统中使用的轻量级虚拟化技术，内核通过创建多个虚拟的操作系统实例（内核和库）来隔离不同的进程，不同实例中的进程完全不了解对方的存在。

2.1.3 虚拟化解决方案

随着业务范围的拓展、信息化进程的推进，企业的IT基础架构将面临挑战，如现有硬件资源的使用效率低、需要专用硬件部署业务应用、业务系统部署费用高及周期长等。企业通常会选择使用基础架构的虚拟化解决方案，来提高硬件资源利用率、减少运营成本、支持数据的共享。常用的虚拟化解决方案包括以下几种。

Xen

Xen是一个由剑桥大学开发的开放源代码的虚拟机监视器，早期仅支持Linux系统，后来也支持一些类Unix系统，如BSD等。Xen通过半虚拟化技术获得高效能的表现，即客户端操作系统需要经过修改后才能运行在Xen虚拟机上。如果在无虚拟化扩展的处理器上执行Xen，操作系统必须经过显式修改后才能够在Xen上运行。如果有Intel的VT-X架构和AMD的AMD-V架构提供的虚拟化扩展支持，未经修改的操作系统可以直接运行在Xen虚拟机上，同时还可以比无硬件支持的运行环境获得大幅的性能提升。另外，Xen虚拟机可以在运行状态下在多个物理主机之间即时迁移（Live Migration）。

KVM

KVM（Kernel-based Virtual Machine）即基于Linux内核的虚拟机，是开源的基于硬件虚拟化扩展（由Intel VT架构或AMD-V架构支持）的全虚拟化解决方案。其最大特点在于经由与Linux内核的集成获得高速度。在KVM中，虚拟机的每个虚拟CPU都是一个常规的Linux进程，由标准Linux调度程序调度。因此，KVM能够使用Linux内核的已有功能。由于KVM本身不执行任何硬件模拟，这就需要客户空间程序QEMU通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间，进行模拟I/O，并使用宿主的显示屏来显示客户机的视频。

VMware v Sphere

VMware v Sphere是VMware公司推出的虚拟化平台，原称为VMware Infrastructure，是一整套的虚拟化应用产品，包含VMware ESX Server 4、VMware Virtual Center 4.0、最高支持8路虚拟对称处理器，以及如VMware HA、VMware DRS和VMware统一备份服务等分布式服务。最新推出的VMware v Sphere5与VMware的其他工作站软件不同，不再依存于宿主操作系统之上，而是与Xen相似，是一款可以独立安装和运行在祼机上的系统，支持内核虚拟化，有较高的稳定性和性能。

Open VZ

Open VZ是基于Linux内核和操作系统的操作系统级虚拟化技术，要求其主机系统和客户系统都必须是Linux（可以分别使用不同的Linux发行版本），以获得性能上的优势。根据Open VZ社区发布的测试结果报告，使用Open VZ的服务器性能较使用KVM的服务器有较大提升。但是，由于Open VZ的客户系统共用主机系统的Linux内核，所以配置起来不如基于KVM的Linux虚拟机灵活。另外，Open VZ的客户系统无法更新内核，可能会导致一些要求高版本内核的软件，如Docker等，无法在Open VZ虚拟机上运行。

Hyper-V

Hyper-V是微软公司的一款虚拟化产品，采用类似Xen和VMware的虚拟机管理器（Hypervisor）技术来提高硬件利用率和服务器的可用性。Hyper-V采用微内核的架构，兼顾安全性和性能的要求，其设计目的是给用户提供熟悉、高效的虚拟化基础设施软件。

Virtual Box

Virtual Box最早是由德国Inno Tek软件公司出品的虚拟机软件，现在是甲骨文公司x VM虚拟化平台技术的一部分。与VMware相比，Virtual Box的独到之处在于其对远程桌面协议（RDP）、i SCSI及USB的支持。Virtual Box在客户操作系统上已经可以支持USB 2.0的硬件设备，但前提是要安装Virtualbox Extension Pack。

2.1.4 虚拟化技术与大数据

大数据时代，我们需要使用计算密集型应用程序来高效地处理海量的分布式存储的数据，这对大数据平台的软件框架和硬件部署都提出了新要求。虚拟化技术由于具备以下三个特性，能够支持大数据平台所需的运行效率和灵活扩展。

（1）可分片性：在虚拟化环境中，物理机上的资源可以被分成许多份，以运行不同应用程序和操作系统。

（2）孤立性：每个虚拟机都独立于其宿主机及其他虚拟机，以保证某个虚拟机的异常崩溃不会影响其他虚拟机和主机的正常运行。

（3）封装性：虚拟机可以生成一个镜像文件，便于备份和向外提供服务。

大数据平台上可以有很多种运用虚拟化技术的方式。

大数据服务器虚拟化

单个物理服务器被分成多个虚拟服务器。服务器的内存、CPU、硬盘和网络等物理资源被虚拟化，以供虚拟机运行自己的系统和程序。使用虚拟机监视器来保证物理资源可以被高效地利用，保证平台良好的扩展性，可以按需求扩容来满足大数据处理对计算能力的需求，为大数据处理提供一个弹性的云环境，同时也使物理资源更加灵活可控。

大数据应用虚拟化

应用程序虚拟化可以根据用户需求将应用程序封装起来，移除对硬件系统的特定依赖，增加系统的灵活性和可移植性。另外，应用程序虚拟化允许根据运行中的实际情况修改应用程序的资源使用策略，以此来提高硬件资源的利用率。应用程序虚拟化和服务器虚拟化可以结合起来使用，服务器虚拟化负责监控和分配CPU、GPU和内存等，在分配资源时由应用程序虚拟化负责考虑业务优先级的实时变化。

大数据网络虚拟化

网络虚拟化将现有的一条条物理网络链接虚拟化成一个网络资源池，这样就可以在一条链路上创建多个虚拟链接，在进行大数据处理时根据各节点的具体需求来分配网络带宽，充分利用带宽资源，突破系统的网络性能瓶颈，提高网络利用率。

大数据存储虚拟化

存储虚拟化能为大数据平台提供动态、弹性的数据存储服务。虚拟化的存储动态调整各个异构数据存储的地点和方式，对不同来源、不同结构、不同用处的数据做个性化的处理，并综合考虑不同属性数据的不同特点，实现整个系统数据存取的统一调度。

2.2 Open Stack技术

2.2.1 Open Stack概述

Open Stack是一个开源的云计算管理平台项目，由NASA（美国国家航空航天局）和Rackspace合作开发，以Apache许可证授权。它是Iaa S（基础设施即服务）组件，提供基础设施服务，让任何人都可以自行建立和提供云端运算服务。Open Stack项目的目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台，因此支持几乎所有类型的云环境。Open Stack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性，它通过各种互补的服务提供Iaa S的解决方案，每个服务提供应用程序编程接口（API）以进行集成。目前，Open Stack开发社区已经拥有超过130家企业及1350位开发者，这些机构与个人都将Open Stack作为Iaa S资源的通用前端。

2.2.2 Open Stack历史

Open Stack作为最热门的云计算开源项目，自2010年10月发布第一个版本Austin，到2016年10月发布Newton版本，已经经历了13个主要版本。Open Stack开发社区每隔6个月就会举行一次设计峰会来讨论和收集需求并写入即将发布版本的指南中，用于指导未来6个月的开发。设计峰会对公众完全开放，包括用户、开发者和上游项目。在每年的4月和10月，社区进行更新版本的发布。Open Stack的更新版本在生产环境中不断被检验，再将需求反馈给社区，然后再由社区来开发。可以说，Open Stack并非脱离实际的理想化的开源社区项目，而是与生产实际紧密结合的、可以复制应用的云计算方案。

Open Stack在2010年7月以Apache 2.0许可授权开源，源代码来自于NASA的Nebula云平台和Rackspace的分布式云存储（Swift）项目。NASA最初使用的是Eucalyptus云计算平台，但随着运算需求持续快速增长，Eucalyptus已经不能满足NASA的云计算规模。Eucalyptus并不是一个完全开源的项目，为了使项目能得到更广泛的支持和应用，NASA首席技术官Chrs Kemp的研究小组为此专门建立了自己的计算引擎，新平台命名为Nova，并将其开源。截至2010年底，Nova和Swift获得了25个企业和组织的支持。2011年，Ubuntu、Debian和SUSE等各Linux发行版先后宣布了对Open Stack的支持。2012年，红帽（Redhat）公司也宣布从Essex发行版起开始支持Open Stack。2013年12月，Oracle宣布成为Open Stack赞助商并计划在Oracle Solaris和Oracle Linux上支持Open Stack。2014年3月，HP推出了基于Open Stack的公有云服务HP Helion。2015年8月，Platform 9发布了与VMware v Sphere深度集成的Open Stack发行版。

2.2.3 Open Stack系统架构

Open Stack的基本设计原则包括以下几点。

（1）可扩展性和伸缩性是Open Stack的主要目标。

（2）任何影响可扩展性和伸缩性的特性都应该避免。

（3）一切交互都应该是异步的。

（4）所有必需的组件必须可以水平扩展。

（5）始终使用无共享架构（Sharenothing）或分片架构（Shard）。

（6）一切都是分布式的，尤其应该将业务逻辑和业务状态放在一起。

（7）接受最终一致性，并在适当的时候使用。

（8）所有提交的代码都需要经过测试。

为了满足这些基本原则，Open Stack被设计成了多个组件，由一系列具有RESTful接口的Web服务实现，它们通过API相互组合为一个整体。多个组件和模块之间通过AMQP协议实现异步通信，相互协调。类似服务的组件可以相互替代，使用者在搭建Open Stack时可以灵活、方便地选取自己需要的组件。

Open Stack的主要组件包括以下几种。

计算服务（Nova）

计算服务是云计算的弹性控制器，它是Iaa S系统的主要组成部分。Open Stack云实例生命期所需的各种动作都将由Nova进行处理和支撑，这就意味着Nova以管理平台的身份登场，负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力，但是它将使用libvirt API与虚拟机的宿主机进行交互，并通过Web服务API来对外提供处理接口。

Nova弹性云主要包括消息队列（Rabbit-mq）、运算工作站（Nova-computer）、网络控制器（Nova-network）和调度器（Nova-scheduler）等组件。Nova计算架构能够方便地横向扩展，不会受到软硬件的限制，提高了与遗留系统和第三方技术整合的能力。

网络管理（Neutron）

网络管理用来管理网络和IP地址，确保网络不会成为云平台的性能瓶颈或限制因素，让用户可以自定义网络使用。Neutron为不同应用场景和用户提供了不同的模块，包括普通网络模块和虚拟局域网（VLAN）来分割服务和网络流量。同时，它还支持静态和动态分配IP，一旦网络出现故障，其流量能被动态重新定位到网络上的任意其他节点。用户可以创建自己的网络、控制网络流量、建立服务器与多个网络的连接等。

块存储（Cinder）

Open Stack为计算实例提供了持久化的块存储，负责创建和管理块设备，如数据库存储、文件系统或提供原始块级存储服务。在Open Stack中，块存储设备与计算完全整合在了一起，用户可以通过面板来管理他们所需的存储量。另外，通过Cinder快照备份下来的块存储卷能够用于数据恢复或创建新的块存储卷。

认证服务（Keystone）

Keystone为所有的Open Stack组件提供认证和访问策略服务，保存用户与所能接触服务的映射，支持类似LDAP（Lightweight Directory Access Protocol，轻型目录访问控制协议）的后端服务目录服务，能够提供多种形式的认证服务。它依赖基于Identity API的REST系统进行工作，通过鉴定动作消息来源者请求的合法性来完成对Swift、Glance、Nova等的认证与授权。另外，服务目录提供了Open Stack上部署的所有服务列表，能够灵活地管理用户和第三方工具所能使用的服务资源。

镜像管理（Glance）

镜像服务器是一套虚拟机镜像发现、注册、检索系统，用来存储模板镜像或系统备份。镜像的添加、删除和共享都是由Glance来完成。其他Open Stack模块如果想和镜像进行交互，也都要通过Glance来获得镜像的元信息。Glance能够在包括Swift在内的多种后端中存储磁盘和服务镜像。镜像服务API提供标准REST接口，用来查询磁盘镜像信息和提供流数据传输接口。Glance增强了现有硬件的功能。例如，如果要与VMware集成，Glance具备针对v Sphere技术的高级特性，如v Motion、DRS（Dynamic Resource Scheduling，动态资源调度）和高可用等。

对象存储（Swift）

Swift为Open Stack提供一种可扩展的、冗余的对象存储，对象和文件被复制多份保存在不同的磁盘上，以保证数据的备份和完整。它类似于Amazon Web Service的S3简单存储服务，具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理，也能够处理归档和媒体流，特别是对大数据和大容量的测度非常高效。存储集群可以横向扩展，即使在发生一个服务器崩溃的情况下，数据也能自动从其他备份中恢复。因为Open Stack通过软件逻辑来保证数据冗余和不同硬件的分布式存储，所以可以部署在廉价的商用集群上。

面板（Horizon）

面板给管理员和用户提供一个图形界面的接口来配置和管理整个集群，这个设计融合了许多第三方产品和服务，如收费、监管和一些其他管理工具。另外，面板还为云服务的提供商和其他赞助商提供了宣传和广告的场所，是用户与Open Stack各组件及服务提供厂商的一个交互接口。

2.2.4 Open Stack的优势和劣势

Open Stack的优势在于以下几个方面。

开源软件

Open Stack本身是以Apache 2.0协议开源的项目，解除了厂商绑定，这使项目的构建更加便宜、灵活，而且没有厂商依赖。项目包括计算、网络和存储等各个方面，庞大的开源社区增加了Open Stack的影响力，使项目可以像Linux那样得到快速的发展，各项技术能更快地稳定和成熟。开源的环境不仅大大降低了商用成本，还使软件Bug的发现和修复在社区的帮助下都十分迅速。

模块松耦合

组件配置简单灵活，可以全部装在一台物理机上，也可以分散在多个物理机中，甚至可以都装在虚拟机中，具有可扩展性及很好的弹性，能实现可定制化Iaa S。Open Stack的组件涉及计算、网络和存储等各个方面，提供的工具能够优化整合硬件集群，提高生产效率，实际搭建时可以根据需要选择组件。

良好的社区生态

许多大的厂商都在使用Open Stack技术，大量科技公司推出了基于Open Stack的云平台解决方案，几乎所有的云厂商都已经涉足Open Stack相关技术的开发。这使运用开源软件不再复杂繁琐，只需支付少量的费用就能得到像思科这样厂商的成套解决方案，并获得技术支持。有了完整工具链的支持，用户就可以专注于应用本身，而不用花费很多精力在云平台的建设上。

Open Stack的劣势在于以下几个方面。

开源项目的开发和维护

和其他大型开源项目一样，Open Stack项目自身存在风险。关键程序员的开发意见不合，或他们失去兴趣而转移到新的项目，都可能使项目停顿。外围厂商主导的分支又会因各自利益不同而难以协调。例如，Open Stack虽然支持几乎所有虚拟化管理程序，不论是开源的Xen、KVM，还是厂商的Hyper-V、VMware，但对它们的支持都是各自开发，存在协调困难的问题。

厂商的利益冲突

在很多情况下，Open Stack项目的供应商之间存在利益冲突。对于项目中的方案，许多公司都有自己的替代解决方案。例如，存储解决方案供应商和Swift项目都旨在构建存储平台，供应商在项目中并不会提供免费的技术支持，他们通常只想确保API的兼容性，并以自己的收费产品替代开源解决方案。

兼容性与开发成本

活跃的社区带来的是频繁更新的版本，版本的迭代时常会出现兼容性问题。而且，如果用户根据自己的需求对代码做了一些改进却不被社区接受，那么用户使用自己代码更新的版本将变得难以维护。另外，Open Stack是一个框架，而不是一个现成的产品，用户想要在上面实现自己的应用，还需要招聘Open Stack技术人员，或者向Open Stack厂商购买解决方案和技术支持，这都会带来成本问题。

2.2.5 虚拟化与Open Stack技术比较

虚拟化和Open Stack技术同为基础云平台的核心技术，各具特点，但它们并不矛盾。如果把基础平台比作发电厂的话，那么虚拟化就是核电厂，Open Stack则是风电厂。

首先，我们来看核电厂。它们一般规模庞大且造价昂贵，很难通过新添电厂来增加产能。而且，庞大的反应堆以及繁杂的配套设施都限制了核电站的数量。所以，核电站的各个方面都做了冗余设计，一方面要尽量避免反应堆出现问题，另一方面可以保证一旦出现个别问题，电量产出依然能满足要求。

这和传统的虚拟化技术十分类似。虚拟化为基础设施提供了冗余和可用性，但是要想给系统新增计算能力就十分困难。虚拟化的扩容大多是垂直的，即增加内存和处理器来使虚拟机管理器拥有更多的可调度资源，但问题在于我们在添加内存和处理器时，不仅受到主板硬件容量的限制，还要考虑到系统的边际效益递减原理。

相比而言，风电厂由便宜的风力涡轮机构成。要想增加电力产能，只要简单地增加风力涡轮机就行。甚至我们可以在一个合适的地方建满这种风力涡轮机，然后把它们统一连接到电网中产生海量的电能。单个发电机的可靠性并不十分重要，因为即使有涡轮机出现故障，我们也只损失了少量的电能产出。Open Stack云平台与风电站一样，并不需要非常可靠的硬件设施，而是通过软件手段来确保系统自动发现和应对硬件错误。如果有一个服务器崩溃，那么应用程序能轻易迁移到其他节点。要想增加系统容量，只要简单地增加节点即可，也可以对单个服务器的硬件进行升级，可以根据具体需求灵活应对，这两种扩展模式也就是水平扩展和垂直扩展。

服务器虚拟化技术是一个传统的基础硬件技术方案，以Open Stack为代表的云框架则是一种新兴技术模型，并不是简单的技术升级，也无法相互替代。相比而言，虚拟化是更底层的技术，能够充分挖掘硬件的性能，但不够灵活；Open Stack是更高层的软件架构，能够调度集群里的各种资源，但是要求运行在云上的应用也需要有相应的架构才能最大化地利用云平台的性能。

2.3 Iaa S平台建设

2.3.1 Iaa S平台介绍

广义上的云平台是指基于硬件的服务，提供计算、网络和存储能力。硬件管理对使用者高度抽象，用户根本不知道数据是由位于哪里的哪几台机器处理的，也不知道是怎样处理的。云计算分布式的资源向用户隐藏了实现细节，并最终以整体的形式呈现给用户。云计算平台可以分为以下三个层次。

（1）基础设施即服务（Infrastructure as a Service，Iaa S）：消费者通过互联网可以从完善的计算机基础设施获得服务。

（2）软件即服务（Software as a Service，Saa S）：一种通过互联网提供软件的模式，用户无需购买软件，而是向提供商租用基于Web的软件来管理企业经营活动。

（3）平台即服务（Platform as a Service，Paa S）：将软件研发的平台作为一种服务，以Saa S的模式提交给用户。因此，Paa S也是Saa S模式的一种应用。但是，Paa S的出现可以加快Saa S的发展，尤其是加快Saa S应用的开发速度。

Iaa S提供商用虚拟化技术将所拥有的部分或全部服务器内存、I/O设备、存储和计算能力整合成一个虚拟的资源池，服务器构成的云端基础设施以虚拟机方式为用户提供所需要的IT资源。它是一种硬件托管的方式，用户按照使用厂商提供的硬件资源的多少进行付费。

虚拟化技术是Iaa S层的核心技术。当需要管理的物理机数量较小时，系统管理员可以手动登录到不同的物理机上进行虚拟机生命周期管理（资源配置、启动和关闭等）。当需要管理的物理机数量较大时，系统管理员就需要写一些脚本程序来提高虚拟机生命周期管理的自动化程度。以管理和调度大量物理和虚拟计算资源为目的的软件称为虚拟化管理工具。虚拟化管理工具是虚拟化技术的自然延伸，是云管理平台的雏形。

简单的虚拟化管理工具解决的是由于物理机数量多而导致的工作内容繁杂问题。在这个层面，虚拟化管理通常和集群的概念同时出现。虚拟化管理工具使系统管理员可以从同一个位置执行以下任务。

（1）对不同物理机上的虚拟机进行生命周期管理。

（2）对所有物理机和虚拟机进行查询和监控。

（3）建立虚拟机命名与虚拟机实例直接的映射关系，使虚拟机的识别和管理更加容易。

随着云计算商业模式的形成，无论是企业外部，还是企业内部，IT自服务的需求越来越明显。同时，超大规模的数据中心急需一个有效的管理方式来降低运营成本。云管理平台可以是一个管理软件的集合，也可以是一个单一的软件实现流所需的管理功能，通过它能够对企业的IT基础架构进行有效管理，并实现企业的IT自服务或按需付费的对外服务。

2.3.2 Iaa S云平台的种类

按照商业模式的不同，云平台可以分成三大类，企业在搭建系统时需要在三种模式之间进行选择。

公有云

公有云通常是指第三方提供商为用户提供的能够通过互联网使用的云，它价格低廉，核心的属性是共享服务资源。公有云是云计算的主要形态，目前市场上公有云占据了较大的市场份额。在国内，公有云可以分为以下几大类。

（1）传统互联网公司，如阿里巴巴、华为、百度等公司打造的云平台。

（2）传统电信基础设施运营商，如中国移动、中国联通和中国电信等提供的公有云服务。

（3）新型云服务公司，如国内的Easy Stack等创业公司打造的云平台。

传统企业构建的云平台会相对保守，整个系统比较稳定可靠。而创业企业在技术应用上会比较灵活，会有更快的版本迭代，提供更多的新功能。

私有云

私有云是为一个用户单独使用而构建的，因而在数据安全性以及服务质量上可以实现有效的管控。私有云的首要前提是要拥有基础设施，并可以控制在此设施上部署应用程序的方式。私有云可以部署在企业数据中心的防火墙内，核心属性是专有资源；可以搭建在企业的局域网上，与企业内部的监控系统、资产管理系统等相关系统进行打通，从而更有利于企业内部系统的集成管理。

私有云虽然在数据安全性方面比公有云高，但是维护的成本也相对较大。因此，一般只有大型企业会采用这类云平台。因为对于这些企业而言，业务数据这条生命线不能被任何其他市场主体获取到。与此同时，一家企业尤其是互联网企业发展到一定程度之后，其运维人员以及基础设施都已经比较充足完善，搭建私有云所需的成本有时候反而会比搭建公有云所需成本要低。例如，百度不使用阿里云，不仅是出于对自身数据安全方面的考虑，成本也是一个比较大的影响因素。

混合云

近几年，混合云模式快速发展起来，融合了公有云与私有云的优劣势。混合云综合了数据安全性以及资源共享性的双重考虑，以个性化的方案达到省钱、安全的目的，从而获得越来越多企业的青睐。但混合云并不完美，存在以下几个方面的问题。

（1）数据冗余能力：对于数据而言，做好冗余以及容灾备份非常有必要。而混合云缺少数据冗余能力，使数据的安全性不能得到很好的保证。

（2）法律规范问题：由于混合云是公有云与私有云的集合，因此在法律法规上必须确保两种云提供商都符合法律规范，而且必须要证明两个云之间是顺从关系。

（3）服务质量：相对于私有云而言，混合云提供的服务质量可能会略差，因为在公有云和私有云的集成空间里寻求一个潜在的问题可能会破坏服务标准。例如，如果一个私有云的关键业务驱动在本地保持敏感和机密数据，那么就要求在公有云中必须体现出使用这些服务的限制。

（4）安全性：从安全角度而言，混合云的风险成本或者学习成本较高。虽然兼有了私有云的安全性，但是复杂的网络配置挑战传统系统管理员的知识经验及能力，随之带来的是高昂的学习成本或者系统管理员能力不足带来的额外成本。

2.3.3 Iaa S平台设计

Iaa S平台通常需要具备以下特点。

规模大、密度高

云计算数据中心必须具备一定规模才能体现出资源共享的优势，因此通常会有数千台服务器。大规模的服务器集中会给数据中心空间、散热、电力等提出较高要求，因此需考虑采用高密度设备来减少对机房资源的占用。

通用性强

云计算中应用与硬件解耦，数据中心提供的虚拟机必须具有通用性，应用可以根据需要在不同硬件上迁移。这就要求服务器采用相同的类型，即CPU类型相同、处理能力相当。

硬件可靠性低

相对于Unix小型机、大型机来说，x86服务器的硬件可靠性较低，因此需要考虑采用软件层面的迁移、负载分担、容错等技术实现整体服务的高可靠性。

扩展性高

云计算的一个重要特征是具有灵活、快速的扩展能力，这就要求网络设计时要考虑高可扩展性，构建大二层网络，满足资源池不断扩充的需要。同时，在资源分配时也可以考虑采用超量供应、瘦供给等技术，实现弹性、动态的资源分配。

安全性要求高

云计算平台上应用共享相同的硬件资源和网络，应用之间数据泄露的风险更高，因此需要采用虚拟局域网隔离、访问控制列表（Access Control List，ACL）等技术实现应用之间的访问控制。

因此，企业在进行Iaa S平台设计时需要考虑以下几个方面。

底层资源设计

根据企业业务架构分析它们对资源的各方面要求，如计算能力、I/O等，总结各种技术组件对底层资源的统一承载要求，规划资源池的CPU、内存、存储及网络配置等。在系统中，基础设施、网络设备、虚拟机、主机、操作系统、CPU、内存、存储、软件、带宽等都被视为可分配资源。要考虑资源调度策略、资源类型、性能要求，同时要考虑如何弹性伸缩。

服务设计

需要根据业务的承载要求、客户消费方式来确定系统的虚拟化方式，对集群资源做统一的规划设计。根据对客户现有情况的分析，尤其是IT系统现状和要点等，得出客户的期望，进而设计出客户需要的服务。

系统稳定性设计

根据业务对系统稳定性的要求，确定差错控制等级。例如，当错误发生时，如何回滚已完成操作以保证整个系统的元数据一致性；根据上层应用需求来确定系统版本是否快速迭代，在易用性与稳定性之间作出取舍。

在Iaa S数据中心的具体建设过程中，需要针对云计算的特点，在硬件选型、技术选择、网络搭建等方面进行针对性的选择和优化，这样才能更好地体现云计算的优势和价值。

服务器设计

选择服务器的类型和进行服务器配置，主要考虑数据中心机房的基础设施配套情况、网络业务对硬件设备的要求、虚拟化后带来的弹性负荷、虚拟化软件在不同架构服务器之间迁移时的兼容问题以及虚拟化过程中产生的性能损耗等方面因素。

存储网络设计

根据实际应用情况对存储I/O、延迟、吞吐量、存储容量大小等方面的需求特点综合考虑，必要时可采用多种存储技术搭建多重存储网络。此外，为了实现存储的池化，需要利用存储虚拟化技术，将异构的存储聚合为单一的大存储，根据业务需要动态分配存储空间，同时可以十分方便地实现存储迁移、快照、克隆、瘦供给、灾备等功能。

数据网络设计

虚拟化技术可以实现服务器物理资源到逻辑资源的转变，让一台物理服务器变成几台甚至几十台相互隔离的虚拟机，而每台虚拟机产生的流量都通过物理服务器的网卡汇聚并输出给网络设备。云计算环境下，数据中心网络主要面临两个瓶颈。一个是数据中心的核心交换设备。它作为数据中心所有业务系统之间以及业务系统和用户之间的交换枢纽，将会是所有流量汇集的地方。所以，网络核心的性能压力最大，是可能的瓶颈所在。另一个是安全设备。安全设备的性能往往比网络设备的性能落后一个数量级，而其在企业数据中心的部署又是必不可少的防护措施。所以，如何突破安全的性能瓶颈至关重要。

2.3.4 Iaa S平台解决方案

目前，Iaa S平台解决方案有两大阵营。

（1）以Amazon EC2和VMware v Cloud为代表的自有、闭源商业模式。

Amazon EC2是全球公认的首例，也是为数不多的Iaa S商业市场成功典范。其EC2架构是为自身公有云提供对外弹性计算量身定制。EC2也是整个AWS最核心的组成部分，AWS中有许多服务需要依赖它。在EC2环境中，虚拟机被称为实例，实例的镜像被称为AMI。任何企业和个人都可以选择不同类型和大小的实例，在很短的时间内创建、启动和运行。

在VMware 产品家族中，VMware v Cloud是一个云计算管理软件。VMware借助ESX在服务器虚拟化领域的技术优势和市场份额，基于VMware v Sphere、VMware v Center、VMware v Cloud Director 和VMware v Shield构建，实现了既在企业内部交付又通过由v Cloud驱动的服务提供商交付的企业级云计算。借助由v Cloud驱动的服务，客户可以放心地利用安全的混合云资源，同时获得选择权和灵活性，从而确保在云计算环境之间实现工作负载互操作性和可移植性。

（2）以Rackspace和红帽为代表的基于Open Stack开源系统提供技术服务的模式。

Rackspace是Open Stack的缔造者之一。Rackspace公司在Open Stack基金会尚未成立的前两年中一直肩负着项目的管理职责，至今仍然被广泛视为Open Stack项目的代表性形象，同时扮演着后者最积极且热心的支持者之一。该公司将Open Stack作为其公有云方案的构建基础，向客户提供软件发行版，帮助他们以同一平台为起点，建立属于自己的私有云以及混合云体系。这家公有云及托管业务供应商是首批将新型Open Stack功能引入生产流程的企业，而且能够提供最强大的公有云部署方案之一。

红帽是历史上第一家依靠向企业用户提供Linux发行版而获得十亿美元收益的公司，已经在Open Stack项目上投入重金。红帽也拥有自己的Open Stack发行版，这个版本与其旗舰产品红帽企业Linux结合得深入而紧密，因此被命名为RHEL Open Stack。红帽为Open Stack项目贡献了大量资源，有望成为这个领域的另一位重量级参与者。另外，Canonical和SUSE两家公司也都推出了自己的Linux发行版，参与到了Open Stack的角逐中来。

IBM公司在2013年宣布Open Stack将成为其云规划中的核心组成部分与发展方向。作为该项目的顶级贡献者之一，IBM利用自身丰富的专业知识处理与企业客户的协作，从而在质量保障以及Open Stack API结合等方面为其带来关键性标准。IBM收购了Iaa S供应商Soft Layer，一步步在Soft Layer云中推进对Open Stack的支持能力。除了Open Stack以外，IBM还针对另一套用于应用程序开发的开源项目Cloud Foundry作出了一系列发展承诺。

Mirantis、Piston和CLoudscaling是市面上几家专门从事Open Stack相关方案开发与销售的公司，也就是将Open Stack产品及服务的支持与经营作为唯一的业务内容。他们将当初参与开发的Open Stack代码转化为打包软件，帮助用户借此构建属于自己的私有云体系，创造出一套易于安装、升级以及管理的平台方案。通过上述经营战略，他们获得了切实的收益，并一步步由依靠风险投资保持运转的新兴企业发展成为拥有强大技术能力的科技公司。

思科公司一直积极地参与Open Stack社区开发工作，主要目的是渗透到Open Stack社区内部，确保自己制造的硬件能够与Open Stack全面兼容。思科还在市场推广工作中扮演着重要角色，甚至借出其云技术团队负责人担任Open Stack董事会的副主席，同时共享自身Web Ex团队在进行Open Stack内部部署过程中积累的实践经验。

2.3.5 Iaa S平台搭建

为了满足海量数据的存储和计算需求，数据中心作为企业信息基础设施的核心部分正显得越来重要。Iaa S平台就是为数据中心提供基础硬件资源的整合，充分利用硬件的存储和计算能力。它不是建筑材料、物理设备和链路的堆砌，而是人员、管理和技术的集成。越来越多的企业意识到搭建数据中心需要从业务需求出发，但如何从业务需求出发，规划数据中心的IT基础架构，满足企业运营及发展的需求，却是企业面临的新难题和新挑战。Iaa S平台建设面临的挑战主要包括以下几个方面。

（1）规划和建设周期长，时间成本高。云平台要承载所有准备上云的业务系统，考虑因素较多。

（2）前期采购成本高。前期资源池建设采购的设备数量较多，占用大量的机房、电源等资源，投资和运维成本均较高，一定时间内会闲置。而且，前期规划能力不足也会造成资源浪费。

（3）管理维护成本高。维护人员要分成不同的团队，维护力量无法分层，分别管理云平台和业务，必须熟悉平台涉及的所有软硬件资源，维护效率不高。

数据中心基础架构正在迅速从特定的工作负载转换成高度动态的云架构，其中的任意工作负荷可以在任何地点提供，并且可以根据应用的需要按需扩展工作负荷的环境。这是个重大的转变，它使开发人员能够构建下一代的IT应用。然后，它也对计算、存储和网络基础架构提出了新的要求。

多虚拟机环境

Open Stack可以运行在v Sphere和多个如KVM或Xen虚拟机之上，成为一个多虚拟机管理平台。这种方法能够支持不同种类的虚拟机，并能够让应用程序运行在最佳的系统环境中。Open Stack控制平面（Control Plane）负责向外提供单节点的作业控制和API接入。

VMware整合Open Stack

Iaa S平台搭建除了直接使用提供商的整套架构之外，企业也可以选择在现有设备系统上进行更新升级。以VMware为例，企业原先使用的虚拟化服务能够与Open Stack整合成为VIO（VMware Intergrated Open Stack）。其中，VMware为Open Stack提供基础设施软件模块，如ESXi、VSAN、NSX和v Center等，使Open Stack部署和维护更加方便，整合后的系统兼具了VMware的高效性和Open Stack的灵活性。2015年底，Adobe公司就开始使用这样的实现架构，把Open Stack引入原先的VMware环境来获得更高的灵活性。

第3章

Hadoop基础组件

3.1 Hadoop概述

3.1.1 Hadoop简介

Apache Hadoop是在计算机集群上进行大规模数据处理的开源分布式计算框架，它支持在大型廉价通用机集群上运行数据密集型应用程序。所有运行在Hadoop上的模块，其设计都要满足一个基本假设，那就是硬件失效是可以容忍的，要求框架本身能够自动处理。

Hadoop框架以Hadoop分布式文件系统（Hadoop Distributed File System，HDFS）和Map Reduce编程范式为核心，这种模式的设计源自谷歌发表的关于Google File System和Map Reduce的论文。这两个组件为用户提供了系统底层细节透明的分布式基础架构，其中采用分布式存储方式能提高读写速度和扩大存储容量；采用Map Reduce整合分布式文件系统上的数据，将工作分成许多小部分，每个部分都能在集群中的任意节点上运行，保证了数据的快速分析和处理。

随着20世纪末期万维网的快速发展，人们创造出搜索引擎和索引来记录关联数据和文本内容。在最初的几年，搜索结果都是经过人工筛选处理的。但是当网站数量飞速增长，手工的处理方式再也无法应付，于是网络爬虫被创造出来，涌现出一大批相关的研究项目和创业公司。

一个由道格·卡汀（Doug Cutting）创建的名为Nutch的开源搜索引擎项目是其中之一，它就是Hadoop的前身。从头开始构建网络搜索引擎是一个非常庞大的计划，项目中包含许多需要随时修改和维护的组件，这就需要专业的团队来实现。据道格·卡汀估计，在2002年，一个支持10亿网页的索引系统仅在硬件上的投入就高达50万美元，每月的运行维护费也有3万美元。不过，他们认为这项工作仍然是值得的。

2002年底，一个可以运行的网页爬取工具和搜索引擎系统的雏形就完成了，这个系统能通过不同机器上分布式的数据存储和计算来更快地获取搜索结果。然而，在这期间另一个叫Google的搜索引擎先行发布，它也是基于相同的分布式存储和计算的概念，能更快返回相关的搜索结果。

2006年，道格·卡汀加入了雅虎公司，并很快将Nutch项目和谷歌早先发表的关于Map Reduce和Google File System的论文结合起来，最后的成果便是Hadoop项目。2008年，雅虎将Hadoop开源出来。Hadoop随即就成为Apache的顶级项目，证明了它的成功、多样化和活跃性。

如今，Hadoop框架及生态系统的开发和维护已经由非营利组织Apache软件基金会来负责。目前，除了雅虎之外，还有很多公司在使用Hadoop，如脸书、领英和易贝等。

3.1.2 Hadoop系统架构

基本的Hadoop框架由以下几个模块组成。

（1）Hadoop Common：一些基本库文件和通用组件，包括一组分布式文件系统和同样I/O的组件和接口，如序列化、JAVARPC和持久化数据结构等。

（2）HDFS：能够在大型廉价通用机集群上存储数据，并能够保证极高的带宽和可靠性。

（3）Hadoop YARN：一个资源管理平台，负责管理集群中的计算资源并将其分配给用户程序。

（4）Hadoop Map Reduce：这是Map Reduce计算模型的一种实现，用来进行大规模数据运算。

如今，Hadoop项目已经远远不止以上几个基本模块，它已经成长为一个完整的生态系统，在核心框架基础之上包括一系列其他额外的组件。

（1）Zoo Keeper：一个高可用的分布式协调服务器，它提供分布式锁之类的基本服务，用于构建分布式应用。

（2）Avro：一种高效、跨语言的RPC以及永久存储数据的序列化系统。

（3）Pig：一种数据流语言和运行环境，能够检索非常大的数据集。

（4）Hive：一个分布式、按列存储的数据仓库，提供基于SQL的查询语言来管理HDFS中存储的数据，在运行时实时翻译成Map Reduce作业，用以查询等操作。

（5）HBase：一个分布式、按列存储的数据库，它使用HDFS作为底层的存储，同时支持Map Reduce的批量式计算和点查询。

（6）Sqoop：负责在数据库和HDFS之间高效传输数据。

3.1.3 Hadoop的优势与不足

Hadoop框架具有以下几点优势。

高可扩展性

Hadoop是一个高度可扩展的平台，能够通过增加节点来方便地扩大系统并处理更多的数据，达到传统的关系型数据库无法企及的数据量。计算机概念的扩展有两种方式：一种是水平扩展，即通过增加机器设备到资源池来解决问题；另一种是垂直扩展，即向现有的机器中添加CPU和内存等。Hadoop使用水平扩展，这种以数据分片为基础的扩展要更加灵活方便，能够为企业提供涉及成百上千个节点上运行的应用程序。而垂直扩展则会受到单机能力的限制，因为我们无法向一台机器中无限添加CPU和内存。

成本低

开源框架本身是免费的，而且底层使用的是廉价的通用机器，部署和维护成本低。所以，Hadoop为企业提供了一个极具成本效益的存储及计算解决方案。传统的关系型数据库管理系统存在的问题，一方面是技术上，它难以有效满足现在海量数据的存储和处理要求；另一方面是经济上，它不符合企业的成本效益。因为企业必须判断哪些数据具有最优价值，然后有目的地保存相应部分的数据。如果保存全部数据，就会使成本过高。而且，当数据量继续增加，传统的关系型数据库技术上达到瓶颈，就会更加放大成本、拖累经济效益。

灵活性高

与传统的关系型数据库不同，用户不必等数据处理完了才存储。数据在处理的过程中就能存储备份，以便进行下一步处理。尤其是在处理文本、图片和视频这些非结构化的数据时，Hadoop相对于传统的解决方案有更大的优势。也就是说，Hadoop能够使企业轻松访问到新的数据源，能够快速分析不同类型的数据，让企业能灵活应对社交媒体、电子邮件或点击流量等数据，找出数据背后的意义和价值。

处理速度快

Hadoop分布式计算模型处理大数据的速度非常快。一个集群拥有的节点数据越多，计算能力也就越强。Hadoop充分整合了Map Reduce运算模型和分布式文件系统，将工作分成许多小部分，每个部分都能在集群中的任意节点上运行。而且，数据处理程序通常都与数据在相同的服务器上，能够在几分钟内处理TB级的数据，保证了数据的快速分析和处理。

容错能力强

数据的分片处理模式是不受硬件崩溃影响的。如果一个节点失效了，运行在其上的作业会被自动重新分配给其他节点，以保证整体分布式计算不受影响。另外，数据的拷贝次数可以在配置文件里设置，并由系统自动完成复制和存储。当数据被发送到一个单独的节点，该数据也被复制到集群的其他节点上。这意味着在故障情况下存在另一个副本可供使用，对于企业的一些关键数据，可以通过增加配置里的冗余度来提高安全等级。

Hadoop框架存在以下几点不足。

Map Reduce模型的局限性

Map Reduce计算模型并不能解决所有问题，它适用于松耦合型的数据处理应用，对于不容易被分解成众多相互独立子任务的紧耦合型计算任务，处理效率很低。因为节点的每次Map Reduce运算都会进行磁盘读写，而迭代算法需要进行多次Map Reduce，不仅磁盘I/O会拖慢运行速度，而且会浪费存储空间，导致运行效率很低。另外，Hadoop Map Reduce是一种离线计算框架，对实时运算、流处理和图计算的支持较差。

技术实现的鸿沟

虽然Hadoop项目已经发展得十分成熟，但是在企业的实际运用中仍然有一定困难。一方面，如果使用Java进行基于Map Reduce模型的编程需要专业计算机人员来进行，但是这样的专业人员难以招聘且费用较高；另一方面，如果选择使用Hive这样的上层组件来降低Hadoop的使用门槛，传统的技术人员可以直接进行类似SQL语言的查询，但是这种实现只能局限于单个领域，不够灵活。另外，Hadoop集群的运维也是一项十分困难的工作，需要有底层如操作系统、分布式系统和计算机网络等相关知识，只有了解Hadoop架构的核心机制，才能很好地完成Hadoop的配置和维护工作。

数据安全问题

数据安全几乎是每个网络系统都要面对的。而对于Hadoop这样的分布式数据框架来说，数据安全问题尤为突出。一方面，要管理好系统操作权限，对用户进行分级授权，限定用户操作范围，杜绝人为的失误；另一方面，要在技术上加强安全防护，如使用Kerberos等协议验证，从技术上防止恶意攻击。

3.1.4 Hadoop的适用场景

廉价存储数据档案

由于Hadoop使用了价格低廉的底层硬件，它在存储和整合各种如交通、社交媒体、传感器和用户行为等数据方面占有优势。这些数据量大、价值密度低的行业使用Hadoop技术来做数据存储就十分有必要，Hadoop所提供的廉价存储使企业能够保存当前价值不那么明显的数据，而这些数据在企业将来的某些分析和规划中可能会发挥重要的作用。

数据挖掘和知识发现

因为Hadoop被设计来处理海量异构数据，能够运行多种分析算法，所以在Hadoop上进行大数据分析有更高的效率，既能通过数据挖掘算法获得潜在的信息，又可以方便地将信息整合成知识，能够帮助企业发现新的机遇，增加企业的竞争力。

数据湖泊

Hadoop能够支持搭建数据湖泊，方便地存储原始数据和多种类型的数据。它和数据仓库的区别主要在于，数据进入数据仓库之前都是经过预处理的，一般都会根据即将进行的数据分析有针对地做数据清洗等工作。但是在大数据时代，面对海量的数据，人们根本不知道以后将如何运用。这需要数据湖泊作为大数据的仓库来存储海量的原始数据，为数据分析提供一个原生的数据视角，给未来的数据应用提供更大的弹性。

3.1.5 Hadoop的商业模式

随着大数据技术及数据挖掘技术应用的快速普及，Hadoop在各个相关领域得到了广泛的应用，并被普遍认为是下一代数据处理的理想平台，许多大型IT公司都把目光瞄向了Hadoop。作为一个开源框架，Hadoop社区在得到商业公司的支持之后正在快速发展。围绕Hadoop的核心架构，大量外围组件被开发出来，极大地丰富了Hadoop的整个生态系统，使Hadoop这个大数据解决方案更加稳定和成熟。

Hadoop厂商在原版Hadoop的基础上进行开发，形成商业发行版。这种发行版克服开源社区版的缺点，更加易用、稳定和完整。而且，最终厂商会适当地开源一部分出来回馈社区，带动Hadoop的发展，形成良性循环。

大多数Hadoop商业发行版都会提供技术指导和支持，使用户能够轻松地部署Hadoop，并完成企业级的数据处理任务。一旦Hadoop商业发行版出现了问题，其厂商会在第一时间作出响应，对Bug进行修补。所以，有大型技术公司支持的Hadoop商业发行版通常都能很快稳定下来，其版本的迭代、补丁的更新和Bug的修补都比开源社区拥有更高的效率。此外，Hadoop厂商通常会给自己的发行版附带上额外的工具组件，使用户能轻松地针对特定的任务进行定制，因而减少了用户的运维和使用成本。

目前，已经有很多企业开始进入Hadoop领域，成为了Hadoop产业中的重要一环。从对Hadoop的应用方式来看，企业大致可以分为以下三类。

Hadoop初创公司

典型代表有Cloudera、Hortonworks和Map R等，它们专注于Hadoop解决方案的开发，如今都或多或少把持着Hadoop生态圈某个大型项目的话语权，对整个生态圈有一定的影响力。Hadoop生态圈已经形成气候，大多数公司都不希望选用一个无法融入生态圈的平台作为自己的业务基础，因为这样会很难部署和应用生态圈的其他组件。因此，这些公司一方面要保持自己在生态圈里的话语权，另一方面提供附加服务：贡献和控制推广更多开源项目，一旦旗下的解决方案得到更多市场，那用户就会更偏向使用它们的附加服务。

传统IT公司

面对新的技术领域，传统IT公司不如初创公司灵活。技术实力强的公司通常会组建自己的团队来针对自身技术体系的特点进行开发改进，它们往往会比较保守，通常在开源项目证明了其工程能力后才会进入。

传统行业

传统行业的信息技术实力不强，通常会依赖IT大厂商提供的解决方案和技术支持，或者直接使用相应的云服务，以IT技术为工具，充分整合已有资源，获得一个全新的视角来进行进一步的创新和升级服务，获得焕发新生的机会。

3.2 Hadoop分布式文件系统HDFS

3.2.1 HDFS的设计目标

Hadoop分布式文件系统（Hadoop Distributed File System，HDFS）是Hadoop分布式计算中数据存储管理的基础，最早是Apache Nutch开发的网络数据搜索引擎框架，后来成为了Hadoop的一个核心子项目。HDFS的设计理念就是能运行在普通硬件之上，通过容错策略来保证数据的可用，为数据密集型应用程序提供高速度的数据接入。同时，它放宽了一部分POSIX约束，以流式数据访问模式来存储超大文件，运行于通用硬件集群上。

高容错性

硬件错误是常态，而不是异常。HDFS可能由成百上千的服务器构成，每个服务器上都存储着文件系统的部分数据。我们面对的现实是构成系统的组件数目是巨大的，而且任一组件都有可能失效。因此，错误检测和快速、自动恢复是HDFS最核心的架构目标。运行在HDFS上的应用和普通的应用不同，需要流式访问它们的数据集。HDFS的设计中更多地考虑到了数据批处理，而不是用户交互处理。因此，相对于数据访问的低延迟问题，更关键之处在于HDFS数据访问的高吞吐量。为了提高数据的吞吐量，HDFS对POSIX的语义做了一些修改，因为POSIX标准设置的很多硬性约束对HDFS应用系统不是必需的。

支持大规模数据集

存储在HDFS上的典型文件一般都在GB或TB级大小，而一个单一的HDFS实例应该能支撑数以千万计的文件。因此，HDFS必须要支持大文件存储，能提供整体上高的数据传输带宽，并且能在一个集群里扩展到数百个节点。

确保数据一致性

“一个文件经过创建、写入和关闭之后不需要改变”这一假设简化了如何确保数据一致性的问题，并且使高吞吐量的数据访问成为可能。Map Reduce应用或者网络爬虫应用都非常适合这个模型。因此，HDFS应用需要支持“一次写入、多次读取”的文件访问模型，未来还有计划扩充这个模型，使其支持文件的附加写操作。

支持计算移植

与一个数据相关的计算，离它操作的数据越近就越高效，在数据达到海量级别时更是如此。将计算移动到数据附近，比将数据移动到应用所在显然更好，因为可以降低网络阻塞的影响，提高系统数据的吞吐量。HDFS提供支持计算自行移动到数据附近的接口。同时，HDFS在设计时考虑到了平台的可移植性，以支持HDFS作为大规模数据应用平台的推广。

3.2.2 HDFS的基本架构

HDFS集群是一个主从结构的集群，由一个主节点Name Node和多个从节点Data Node组成，用户通过客户端（Client）与Name Node和Data Node交互来访问整个文件系统，如图3-1所示。

图3-1 HDFS系统架构

（1）Name Node是一个中心服务器，它管理着文件系统的命名空间并负责向客户端提供文件连接信息，实现数据对Data Node存储块的映射，并执行如打开、关闭和重命名文件等文件操作。

（2）Data Node用来管理各个节点上的数据，可以执行客户端发送的数据块读写请求等，负责对本地的数据块进行创建、删除和协调分片等操作，通常在集群中每个节点都会有一个Data Node。

（3）客户端直接接收用户指令，负责与Name Node和Data Node交互，完成具体的操作。HDFS提供了各种各样的客户端，包括命令行接口、Java API、Thrift接口、C语言库、用户空间文件系统等。

Name Node和Data Node被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统。HDFS采用Java语言开发，因此任何支持Java的机器都可以部署Name Node或Data Node。由于采用了可移植性极强的Java语言，HDFS可以部署到多种类型的机器上。一个典型的部署场景是一台机器上只运行一个Name Node实例，而集群中的其他机器分别运行一个Data Node实例。这种架构并不排斥在一台机器上运行多个Data Node，只不过这样的情况比较少见。

3.2.3 HDFS的特点

文件命名空间

HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录，然后将文件保存在这些目录里。文件系统命名空间的层次结构和大多数现有的文件系统类似，用户可以创建、删除、移动或重命名文件。Name Node负责维护文件系统的命名空间，任何对文件系统命名空间或属性的修改都将被Name Node记录下来。应用程序可以设置HDFS保存的文件的副本数目，也叫作文件的副本系数，这个信息也由Name Node保存。

数据组织

HDFS被设计成支持大文件，适用HDFS的是那些需要处理大规模的数据集的应用。这些应用都是只写入数据一次，但却读取一次或多次，并且读取速度应能满足流式读取的需要。HDFS支持文件的“一次写入、多次读取”模式。一个典型的数据块大小是64MB。因此，HDFS中的文件总是按照64MB被切分成不同的块，每个块尽可能地存储在不同的Data Node中。

冗余备份

HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件切分成一系列的数据块进行存储，除了最后一个，所有数据块都是64MB大小。为了容错，文件的所有数据块都会有副本。每个文件的数据块大小和副本系数都是可配置的。副本系数在文件创建的时候由应用程序指定，也可以在之后改变。HDFS中的文件都是一次性写入的，并且严格要求在任何时候只能有一个写入者。Name Node全权管理数据块的复制，它周期性地从集群中的每个Data Node接收心跳信号和块状态报告（Blockreport）。接收到心跳信号意味着该Data Node节点工作正常。块状态报告包含了一个该Data Node上所有数据块的列表。

通信协议

所有的HDFS通信协议都是建立在TCP/IP协议之上。客户端通过一个可配置的TCP端口连接到Name Node，通过Client Protocol协议与Name Node交互。而Data Node使用Data Node Protocol协议与Name Node交互。一个远程过程调用（Remote Process Call，RPC）模型被抽象出来封装Client Protocol和Data Node Protocol协议。在设计上，Name Node不会主动发起RPC，而是响应来自客户端或Data Node的RPC请求。

健壮性

每个Data Node节点周期性地向Name Node发送心跳信号。网络割裂可能导致一部分Data Node与Name Node失去联系。Name Node通过心跳信号的缺失来检测这种情况，并将这些近期不再发送心跳信号的Data Node标记为宕机，不会再将新的IO请求发给它们。任何存储在宕机Data Node上的数据将不再有效。Data Node的宕机可能会引起一些数据块的副本系数低于指定值，Name Node不断地检测这些需要复制的数据块，一旦发现就启动复制操作。当某个Data Node节点失效、某个副本遭到损坏、Data Node上的硬盘错误或者文件的副本系数增大等情况出现时，可能需要重新复制。

负载均衡

HDFS的架构支持数据均衡策略。如果某个Data Node节点上的空闲空间低于特定的临界点，系统就会按照均衡策略自动地将数据从这个Data Node移动到其他空闲的Data Node。当对某个文件的请求突然增加，那么也可能为该文件创建新的副本，并且同时重新平衡集群中的其他数据。

安全模式

Name Node启动后会进入一个称为安全模式的特殊状态。处于安全模式的Name Node不会进行数据块的复制。Name Node从所有的Data Node接收心跳信号和块状态报告。块状态报告包括某个Data Node所有的数据块列表。每个数据块都有一个指定的最小副本数。当Name Node检测确认某个数据块的副本数目达到这个最小值，那么该数据块就会被认为是副本安全的；在一定百分比（这个参数可配置）的数据块被Name Node检测确认是安全之后（加上一个额外的30秒等待时间），Name Node将退出安全模式状态。另外，Name Node会确定还有哪些数据块的副本没有达到指定数目，并将这些数据块复制到其他Data Node上。

3.2.4 HDFS的优势与缺点

HDFS作为一种新兴的文件系统，和传统的分布式文件系统相似，都是运行在普通硬件之上的分布式文件系统。对于追求海量数据的高吞吐量、批量处理任务，HDFS无疑能发挥巨大的威力。但是，对文件的随机读写、低延时访问、大量小文件的存储及处理都是HDFS的弱项。具体地说，HDFS相对于其他分布式文件系统的优势在于以下几个方面。

（1）低成本、高容错：HDFS可以部署在低成本的硬件之上，同时降低了对POSIX的需求，使其可以以流的形式访问文件数据，非常适合大数据集的应用程序。

（2）访问透明：用户能通过相同操作来访问本地文件和远程文件。如果把HDFS设置成本地文件系统，而不是分布式的，那么HDFS的应用程序可以直接读写本地文件，只需要修改配置文件。

（3）支持并发控制：客户端对文件的读写不应该影响其他客户端对同一个文件的读写。要想实现这种单个文件拷贝语义，确保数据的一致性，分布式文件系统需要做出复杂的交互，如采用时间戳、互斥、原子操作等。而HDFS采用的机制非常简单，任何时间都只允许一个客户端进行写操作。当客户端需要写文件时，会对这个文件申请一个租约，只有这个租约被释放，其他客户端才能申请对这个文件的写操作。文件经创建并写入关闭之后不再改变，这就是“一次写入、多次读取”模型。

（4）资源移动策略：HDFS支持“移动计算到数据”。HDFS支持数据的多副本（默认为3个副本），存储任一副本的节点都可以执行任务操作，HDFS会把任务分配给距离客户端最近且存有副本的节点。

HDFS的缺点及改进策略如下。

（1）不适合低延迟数据访问：HDFS是为了处理大型数据集、提高数据吞吐量而设计，这就可能以高延迟作为代价。所以，如果处理一些用户要求时间比较短的低延迟（数十毫秒）应用请求，HDFS往往难以胜任。此外，HDFS使用单一主机Name Node，所有对文件的请求都要经过它，当请求多时，延时会变大。当前，对于那些有低延时要求的应用程序，HBase是一个更好的选择。另外，使用缓存或多主机设计可以降低客户端的数据请求压力，以减少延时。还可以对HDFS系统进行内部修改，在大吞吐量与低延时之间进行折中。

（2）无法高效存储大量小文件：Name Node节点在内存中存储整个文件系统的元数据，因此文件的数量就会受到限制，过多的小文件将严重影响系统性能。文件系统所能容纳的文件数目是由Name Node的内存大小来决定，每一个文件、文件夹和文件区块Block需要占据150字节左右的空间。所以，如果有100万个文件，每一个文件占据一个Block，至少需要300MB内存。当前来看，存储数百万的文件还是可行的，当文件数量扩展到数十亿时，当前的硬件水平就没法实现了。要想让HDFS能处理好小文件，有以下3种方法。

①利用Sequence File、Map File、Har等方式归档小文件。这个方法的原理就是把小文件归档起来管理，HBase就是基于此原理实现的。如果想找回原来的小文件内容，就必须知道与归档文件的映射关系。

②横向扩展。一个Hadoop集群能管理的小文件有限，那就把几个Hadoop集群拖到一个虚拟服务器后面，形成一个大的Hadoop集群。

③多主机设计，降低单点访问负载和单点失败。正在研发中的GFS II采用分布式多主机设计，并且把Block大小改为1MB。

（3）不支持文件的多用户写入及任意修改：Hadoop适用于文件“一次写入、多次读取”的应用场景，如搜索引擎，而且不支持随机写入。写操作只能在文件末尾完成，即追加操作。可以利用Chubby、Zoo Keeper之类的分布式协调服务来解决文件的一致性问题，提供多用户支持，但是这些特性的加入将会降低Hadoop的效率。

3.3 Hadoop分布式计算框架Map Reduce

3.3.1 Map Reduce简介

Hadoop Map Reduce是一个软件框架，基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上，并以一种可靠容错的方式并行处理TB及以上级别的数据集。

一个Map Reduce作业通常会把输入的数据集切分为若干独立的数据块，由Map任务以完全并行的方式处理它们。框架会对Map的输出先进行排序，然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在HDFS中。框架负责任务的调度和监控，以及重新执行已经失败的任务。

通常，Map Reduce框架和HDFS运行在一组相同的节点上。也就是说，计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务，同时高效利用整个集群的网络带宽。

Map Reduce框架由一个单独的主节点作业调度器（Master Job Tracker）和多个从节点任务调度器（Slave Task Tracker）共同组成。主节点作业调度器负责调度作业的所有任务，监控任务的执行，重新执行已经失败的任务。这些任务由不同的从节点负责执行。

应用程序指明作业输入/输出的路径，并通过实现合适的接口或抽象类提供Map和Reduce函数。再加上作业的其他参数，就构成了作业配置（Job configuration）。Hadoop的作业客户端提交作业（Jar包、可执行程序等）和配置信息给主节点作业调度器，后者将作业配置发给从节点任务调度器进行任务调度并监控它们的执行状态，同时提供状态和诊断信息给作业客户端。

3.3.2 Map Reduce的运行流程

按照时间顺序，Map Reduce的运行流程包括输入分片（Input Split）、Map阶段、Combiner阶段、Shuffle阶段和Reduce阶段，如图3-2所示。

（1）输入分片：在进行Map计算之前，Map Reduce会根据输入文件计算输入分片，每个输入分片对应一个Map任务。输入分片存储的并非数据本身，而是一个分片长度和一个记录数据位置的数组。

（2）Map阶段：根据实际情况编写Map函数。一般Map操作都是本地化操作，也就是在数据存储节点上进行。因此，Map函数的执行效率相对好控制。

Data

Map

Partition

Map

Reduce

Output

Shuffle，group and sort AADB BBCB DACC EDAD

EDAD

DACC

BBCB

AADB

图3-2 Map Reduce流程展示D，1 D，1 D，2 E，1 E，1 D，2 A，1 B，1 B，3 C，1 C，2 D，1 A，1 C，2 B，3 C，1 A，2 A，1 A，1 A，2 D，1 B，1

E，1

D，4

C，3

B，4

A，4

Combine A，4 B，4 C，3 D，4 E，1

（3）Combiner阶段：这是一个可以选择的阶段，是Map运算的后续操作，在Map计算出中间文件前做一个简单的合并重复键值的操作，减少Map输出文件的冗余，提高宽带的传输效率。

（4）Shuffle阶段：将Map的输出作为Reduce的输入的过程就是Shuffle。一般Map Reduce计算的都是海量数据，Map输出时不可能把所有文件都放到内存操作，因为对结果进行排序的内存开销很大。因此，Map写入磁盘的过程十分复杂。Shuffle阶段有两种阈值设置：第一，获取来自Map的结果数据时，根据数据大小决定划分到内存或者磁盘；第二，内存和磁盘能够保存的文件数目有阈值，超出阈值则会对文件进行Merge操作，即小文件合并成大文件。

（5）Reduce阶段：根据具体情况编写Reduce函数，最终结果存储在HDFS上。

3.3.3 Map Reduce与Data Flow比较

在Map Reduce框架中，随着分布式系统集群的规模和其工作负荷的增长，许多问题凸显出来，主要问题如下。

（1）作业调度器（Job Tracker）集资源管理与任务调度于一身，是Map Reduce的集中处理点，存在单点故障。

（2）作业调度器完成了太多的任务，造成了过多的资源消耗，包括很大的内存开销，无形中增加了作业调度崩溃的风险，这也是为什么业界普遍认为旧版Hadoop的Map Reduce只能支持上限4000节点主机的原因。

（3）资源强制被划分成Map 任务时间片和Reduce任务时间片，如果系统中只有Map任务或者只有Reduce任务时，会造成资源的浪费。

（4）从操作的角度来看，现在的Hadoop Map Reduce框架在有任何变化时都会强制进行系统的升级更新。而且，不管用户的喜好，强制让分布式集群系统的每一个用户端同时更新，这些更新会让用户为了验证他们之前的应用程序是不是适用新的Hadoop版本而浪费大量时间。

谷歌在2014年7月声明，已在多年前就放弃了类似于Hadoop的Map Reduce技术，而是开放了一个全新的分析大数据的平台——谷歌Cloud Data Flow。其产品主管格雷格·德米齐烈（Greg De Michillie）指出：“虽然发明Map Reduce使用分布式计算来处理大数据，但越来越多的设备和信息依然需要更加有效的分析。Cloud Data Flow对用户来说不需担心部署、维护和扩展基础设施所带来的麻烦，可以很容易地帮助其洞察数据中的价值。”谷歌云平台市场总监布赖恩·戈德法伯（Brian Goldfarb）强调：“使用大数据的方式不同，相应的技术也不同，这就需要开发者掌握大量的相关知识。Cloud Data Flow却可以让编程人员以同样的一种方式来进行数据分析。”

在计算机科学中对数据流（Data Flow）的定义包括“描述一种架构，在这种架构下一个变量的改变会导致其他所有依赖它的变量都将重新计算”“通过无界先进先出（unbounded FIFO）方式进行信息交换顺序固定的进程组合”等。

谷歌Cloud Data Flow的优点在于以下几个方面。

（1）传统Map Reduce只能处理单一的流，而Data Flow可以构建复杂管道Pipeline，自动优化和调度。

（2）支持从批处理模式到流式计算模式的无缝切换。

（3）不需手工配置和管理Map Reduce集群。自动进行代码优化和资源调度，使开发者的主要精力可以放在业务逻辑本身。

3.4 Hadoop统一资源管理框架YARN

3.4.1 YARN架构简介

以Hadoop Map Reduce为代表的传统Map Reduce模型是一种离线计算框架，类似于高性能计算中的批处理技术，适合数据密集型计算，但对迭代计算、流式计算等计算框架不能很好地支持。而且，从业界使用分布式系统的变化趋势和Hadoop框架的长远发展来看，Map Reduce的Job Tracker/Task Tracker机制需要大规模地调整来修复它在可扩展性、内存消耗、线程模型、可靠性和性能上的缺陷。在过去的几年中，Hadoop开发团队做了一些Bug的修复。但是，最近这些修复的成本越来越高，表明对原框架作出改变的难度越来越大。为此，Apache启动了YARN（Apache Hadoop Next Gen Map Reduce，MRv2）项目的开发。

Hadoop 2.0中引入了YARN架构作为统一的资源管理器，对硬件资源进行统一管理调度，如图3-3所示。YARN框架是对原先Map Reduce（MRv1）框架的改进。在原先的版本中，资源管理和作业管理均是由Job Tracker实现的。新架构把资源管理功能剥离出来由YARN完成。由于具有通用性，YARN不仅限于Map Reduce，也可以作为其他计算框架的资源管理系统，如Spark、Storm等。这些运行在YARN上的运算框架通常称为“x on YARN”，如“Spark on YARN”“Storm on YARN”等。

图3-3 Hadoop架构演化

3.4.2 YARN架构框架

为了从根本上解决旧Map Reduce框架的性能瓶颈，促进Hadoop框架的更长远发展，从Hadoop 2.0开始，Map Reduce框架完全重构，发生了根本的变化。新的Hadoop Map Reduce框架被命名为Map Reduce V2或者YARN，其架构如图3-4所示。

架构重构的根本思想是将作业调度器的两个主要功能——资源管理、任务的调度与监控分离成单独的组件。新的资源管理器（Resource Manager）全局管理所有应用程序计算资源的分配，每一台机器的节点管理服务器（Node Manager）负责管理用户在那台机器上的进程并能对计算进行组织，每一个应用的应用管理器（Application Mstr）负责相应的调度和协调。

图3-4 YARN系统架构

资源管理器支持分层的应用队列，这些队列享有集群一定比例的资源。从某种意义上讲，它就是一个纯粹的调度器，在执行过程中不对应用进行监控和状态跟踪。同样，它也不能重启因应用失败或者硬件错误而运行失败的任务。资源管理器是基于应用程序对资源的需求（内存、CPU、磁盘、网络等）进行调度的，每一个应用程序需要不同类型的资源，因此就需要不同的容器。资源管理器提供一个调度策略的插件，可以基于现有的能力调度和公平调度模型，将集群资源分配给多个队列和应用程序。

节点管理服务器是每一台机器的代理，也是执行应用的容器，监控应用的资源使用情况并向资源管理器汇报。

每一个应用管理器的职责包括向节点管理服务器索要适当的资源容器、运行任务、跟踪应用程序的状态和监控它们的进程，以及处理运行失败的任务。

YARN既不是为长时间运行的服务而设计，也不是为了满足短期交互和快速响应式请求，因为它并不能处理像分布式文件系统或数据库那样有状态的服务。YARN是为了方便无状态的脚本任务重启而设计。虽然从理论上看，YARN可以处理不同类型的工作负载，但是对于支持日益复杂的调度算法，YARN并不是一个轻量级的模型。

3.4.3 YARN与旧Map Reduce框架对比

YARN作为新的一代Map Reduce框架，相对于旧Map Reduce框架有显著的变化。原框架中核心的作业调度器和任务调度器不见了，取而代之的是资源管理器、节点管理器和应用管理器三个部分，其主要优势如下。

（1）大大减小了作业调度器（也就是现在的资源管理器）的资源消耗，并且让监测每一个任务状态的程序分布式化了，更安全、更优美。

（2）在YARN中，应用管理器是一个可变更的部分，用户可以对不同的编程模型写自己的App Mst，让更多类型的编程模型能够跑在Hadoop集群中。

（3）对资源的表示以内存为单位，比之前采用的剩余分片数目更合理。

（4）旧框架中，作业调度器的一个很大负担就是监控任务的运行状况。现在，这部分工作由应用管理器来负责。而资源管理器中有一个模块负责监测应用管理器的运行状况，如果出问题则会将其在其他机器上重启。

3.4.4 YARN与Mesos框架对比

Mesos是UC Berkeley的一个研究项目，现已成为Apache基金会的一个顶级项目。当前有一些公司使用Mesos管理集群资源，如Twitter。

Mesos是一个主/从结构。其中，主节点是非常轻量级的，仅保存了计算框架和Mesos从节点的一些状态。而这些状态很容易通过计算框架和从节点的重新注册而重构，因而可以很容易解决Mesos主节点的单点故障问题。

Mesos主节点实际上是一个全局资源调度器，采用某种策略将某个从节点上的空闲资源分配给某一个框架，各种框架通过自己的调度器向Mesos主节点注册，以接入到Mesos中。而Mesos从节点的主要功能是汇报任务的状态和启动各个框架的执行器，如Hadoop的执行器是任务调度器。

Mesos是一个“两级”调度器，允许每个框架自己决定使用哪种算法来调度运行的工作，每种算法都能根据自己的策略进行接收或拒绝分配请求。调度算法是可拔插的，Mesos可以容纳成千上万种调度算法以多租户的方式运行在同一个集群。Mesos扮演仲裁者，在多个调度器上调度资源，解决冲突，并且确保资源被公平地分发。这种模型与在一台笔记本电脑或智能手机上同时运行多个App十分类似，当需要更多内存时会创建新的线程或请求，由操作系统来仲裁管理所有的请求。多年的操作系统和分布式系统的实践证明，这种模型的好处在于它具有良好的扩展性。

Mesos与YARN主要在以下几方面有明显不同。

框架担任的角色

在Mesos中，各种计算框架是完全融入Mesos中的。也就是说，如果想在Mesos中添加一个新的计算框架，首先需要在Mesos中部署一套该框架。而在YARN中，各种框架作为客户端的库使用，不需要事先部署一套该框架。从这点上说，YARN运行和使用起来更加方便。

调度机制

二者都采用了双层调度机制。第一层，资源管理系统（Mesos/YARN）将资源分配给应用程序或框架；第二层，应用程序将收到的资源进一步分配给内部的任务。但是，资源分配器智能化程度不同，Mesos是基于资源提供的调度机制，包含非常少的调度语义，本身并不知道各个应用程序资源需求，只是简单地将资源推给各个应用程序，由应用程序选择是否接受资源；YARN的应用管理器会把各个任务的资源要求汇报给YARN，由YARN根据需求为应用程序分配资源。

扩展性

YARN一般只用于Hadoop集群，而Mesos可以为Hadoop、Spark、Docker等多种应用提供资源调度。

3.5 Hadoop分布式集群管理系统Zoo Keeper

3.5.1 Zoo Keeper简介

在大数据和云计算盛行的今天，应用服务由很多个独立的程序组成，这些独立的程序则运行在形形色色、千变万化的一组计算机上。相对于开发在一台计算机上运行的单个程序，如何让一个应用中多个独立的程序协同工作是一件非常困难的事情。开发这样的应用，很容易让开发人员陷入如何使多个程序协同工作的逻辑中，最后导致没有时间更好地思考和实现他们自己的应用程序逻辑。又或者开发人员对协同逻辑关注不够，只是用很少的时间开发了一个简单脆弱的主协调器，导致不可靠的单一失效点。

Zoo Keeper的设计保证了应用的健壮性，这就使应用开发人员可以更多关注应用本身的逻辑，而不是多个程序协同工作。Zoo Keeper从文件系统API得到启发，提供一组简单的API，使开发人员可以实现通用的协作任务，包括选举主节点、管理组内成员关系、管理元数据等。Zoo Keeper包括一个应用开发库（主要提供Java和C两种语言的API）和一个用Java实现的服务组件。Zoo Keeper的服务组件运行在一组专用服务器之上，保证了高容错性和可扩展性。

Zoo Keeper是Hadoop旗下的一个正式子项目，其核心是一个精简的分布式文件系统。与HDFS不同，它注重数据的可靠性，所以只存储少量的重要数据，但将这些数据在每个集群节点上都保留一个备份。对Zoo Keeper上文件的任意增、删、写操作都会发送给主节点，然后由主节点同时发送给所有的集群节点，只有集群里超过半数以上节点都得到消息并给出响应后，这个操作才能成功进行。这样只要集群内失效的节点不超过一半，就不会有任何数据丢失，从而提供一个高可靠性的分布式文件系统。由于Hadoop集群通常是由一系列性能参差不齐的节点组成，系统单节点故障率非常高，为保证集群关键数据的可靠存储，Zoo Keeper是必不可少的。

由于Zoo Keeper提供的是高可靠性服务，每次操作均需要集群内半数以上的节点响应，那么当Zoo Keeper集群的规模变大之后，节点响应带来的延时也与日俱增。为了解决节点响应带来的延迟过高问题，Zoo Keeper将集群内节点分成两类：一类是响应节点，另一类是观察节点。响应节点对数据更新请求作出应答，而观察节点不参与数据更新请求的应答，因此集群的数据更新延迟主要由响应节点决定。这样，当集群规模增大时，只要保持响应节点的数量不变，即可使数据更新的延迟保持在一个恒定的值。但是，目前Zoo Keeper的响应节点和观察节点都是由用户手动指定的，用户并不能预知集群内各节点的性能、状态。因此，用户手动设定的响应节点可能并非最合适的节点。

3.5.2 Zoo Keeper总体架构

Zoo Keeper应用通过客户端库实现了对Zoo Keeper的调用，客户端库负责与Zoo Keeper服务器端进行交互。图3-5展示了客户端与服务器端之间的关系。每一个客户端导入客户端库，之后便可以与任何Zoo Keeper的节点进行通信。

图3-5 Zoo Keeper架构总览

Zoo Keeper有一个分层的命名空间（Zoo Keeper Namespace，ZNode），结构类似文件系统的目录结构，非常简单而直观，每个ZNode包含一个路径和与其相关的元数据，以及继承自该节点的子列表。另外，和ZNode有关的还包括监视（Watches）、序列节点（Sequence Node）、访问控制列表（ACL）等。

ZNode

Zoo Keeper中使用Zxid（Zoo Keeper Transaction Id）来表示每次节点数据变更，一个Zxid与一个时间戳对应，所以多个不同的变更对应的事务是有序的。

监视

监视只能触发一次。也就是说，如果客户端在指定的ZNode设置了Watch，如果该ZNode数据发生变更，Zoo Keeper会发送一个变更通知给客户端，同时触发设置的Watch事件。如果ZNode数据又发生了变更，客户端在收到第一次通知后没有重新设置该ZNode的Watch，则Zoo Keeper就不会发送一个变更通知给客户端。

Zoo Keeper异步通知设置Watch的客户端。但是，Zoo Keeper能够保证在ZNode的变更生效之后才会异步地通知客户端，然后客户端才能够看到ZNode的数据变更。由于网络延迟，多个客户端可能会在不同的时间看到ZNode数据的变更，但是看到变更的顺序是能够保证有序一致的。

序列节点

创建ZNode时可以请求Zoo Keeper生成序列，以路径名为前缀，计数器紧接在路径名后面。

访问控制列表

访问控制列表可以控制访问Zoo Keeper的节点，只能应用于特定的ZNode上，而不能应用于该ZNode的所有子节点上。

3.5.3 Zoo Keeper的运行模式

Zoo Keeper服务器端运行于两种模式下：独立模式（Standalone）和仲裁模式（Quorum）。独立模式几乎与其术语所描述的一样：有一个单独的服务器，Zoo Keeper状态无法复制。在仲裁模式下，具有一组Zoo Keeper服务器，称为Zoo Keeper集合（Zoo Keeper ensemble），它们之间可以进行状态的复制，并同时服务于客户端的请求。

仲裁

在仲裁模式下，Zoo Keeper复制集群中所有服务器的数据。但如果让一个客户端等待每个服务器完成数据保存后再继续，延迟问题将无法接受。因此，Zoo Keeper中存在一个法定数，是指为了使Zoo Keeper工作有效运行的服务器的最小数量。这个数字也是服务器告知客户端安全保存数据前，需要保存客户端数据的服务器的最小个数。例如，我们一共有5个Zoo Keeper服务器，但法定数为3个，这样只要任何3个服务器保存了数据，客户端就可以继续运行，而其他2个服务器最终也将捕获到数据并保存数据。确定法定数的大小是一件非常重要的事，它需要保证不管系统发生延迟或崩溃，服务器主动确认的任何更新请求需要保持下去，直到另一个请求代替它。

会话

在对Zoo Keeper集合执行任何请求前，一个客户端必须先与服务器建立会话。会话的概念非常重要，对Zoo Keeper的运行也非常关键。客户端提交给Zoo Keeper的所有操作均关联在一个会话上。当一个会话因某种原因而中止时，在这个会话期间创建的临时节点将会消失。

当客户端通过某一个特定语言套件来创建一个Zoo Keeper句柄时，它就会通过服务器建立一个会话。客户端初始连接到集合中某一个服务器或一个独立的服务器，通过TCP协议与服务器进行连接并通信。但当会话无法与当前连接的服务器继续通信时，会话就可能转移到另一个服务器上。Zoo Keeper客户端库透明地转移一个会话到不同的服务器。

会话提供了顺序保障，这就意味着同一个会话中的请求会以FIFO（先进先出）顺序执行。通常，一个客户端只打开一个会话。因此，客户端请求将全部以FIFO顺序执行。如果客户端拥有多个并发的会话，FIFO顺序在多个会话之间未必能够保持。而即使一个客户端中连贯的会话并不重叠，也未必能够保证FIFO顺序。

3.5.4 Zoo Keeper的设计要点

Zoo Keeper是基于以下4个目标来进行权衡和设计的。

简单

分布式应用中的各个进程可以通过Zoo Keeper的命名空间来进行协调。这个命名空间是共享的、具有层次结构的，更重要的是它的结构足够简单，像我们平时接触到的文件系统的目录结构一样容易理解，如图3-6所示。

图3-6 Zoo Keeper目录结构

与传统文件系统不同的是，Zoo Keeper中的数据保存在内存中，实现了分布式同步服务的高吞吐和低延迟。

冗余

Zoo Keeper被设计为复制集群架构，每个节点的数据都可以在集群中复制传播，使集群中的每个节点数据同步一致，从而达到服务的可靠性和可用性。前面说到，Zoo Keeper将数据放在内存中来提高性能，为了避免发生单点故障，支持数据的复制来达到冗余存储，这是必不可少的。

有序

Zoo Keeper使用时间戳来记录导致状态变更的事务性操作。也就是说，一组事务通过时间戳来保证有序性。基于这种特性，Zoo Keeper可以实现更加高级的抽象操作，如同步等。

快速

Zoo Keeper包括读写两种操作，基于Zoo Keeper的分布式应用，如果是读多、写少的应用场景（读写比例大约是10：1），那么就更能体现出读性能的高效。

3.5.5 Zoo Keeper的使用

Zoo Keeper是一个针对大型分布式系统的可靠协调系统，主要用来解决分布式应用中的数据管理问题，如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。Zoo Keeper的设计目标就是封装好复杂、易出错的关键服务，将简单易用的接口和性能高效、功能稳定的系统提供给用户。

在具体使用时，我们需要特别注意以下问题。

消息延迟

消息传输可能会发生任意延迟，如因为网络拥堵引起的延迟可能会导致不可预期的后果。根据基准时钟，进程P先发送了一个消息，之后另一个进程Q发送了消息，但是进程Q的消息也许会先完成传送。

处理器性能

操作系统的调度和超载也可能导致消息处理的任意延迟。当一个进程向另一个进程发送消息时，整个消息的延迟时间约等于发送端消耗的时间、传输时间、接收端处理时间的总和。如果发送或接收过程需要调度时间进行处理，消息延时会更高。

时钟偏移

使用时间概念的系统并不少见，但处理器时钟并不可靠，它们之间也会发生任意的偏移。因此，依赖处理器时钟也许会导致错误的决策。

在实际情况中，没有收到一个进程发送的消息，可能是该进程已经崩溃，或者最新消息发生了网络延迟，或者其他情况导致进程延迟，或者进程时钟发生了偏移。

Zoo Keeper的精确设计简化了这些问题的处理。Zoo Keeper并不是完全消除这些问题，而是将这些问题在应用服务层面完全透明化，使这些问题更容易处理。Zoo Keeper实现了重要的分布式计算问题的解决方案，直接为开发人员提供了某种程度上实现的封装。

第4章

Hadoop其他常用组件

4.1 Hadoop数据仓库工具Hive

4.1.1 Hive简介

HDFS上存储了海量的日志，编写Map Reduce程序代码对于类似数据仓库的需求来说总是显得难以维护和重用。Hive作为一种基于Hadoop的数据仓库解决方案应运而生，并得到了广泛应用。

Hive是Hadoop上的数据仓库，同时兼具数据仓库中的存储引擎和查询引擎的功能，如图4-1所示。它由Facebook推出，主要是为了让不懂Java代码编程的人员也能够通过SQL来驾驭Hadoop集群，进行分布式数据的多维度分析，甚至可以只通过Web界面来直接操作Hive（通过Hive来驾驭Hadoop）。这对于市场营销人员、系统管理员、数据分析师至关重要。Hive的核心是把自己的SQL语言即HQL翻译成为Map Reduce代码，然后交给Hadoop集群执行。由于是通过写HQL来完成业务需求，所以相对编程Map Reduce而言，Hive非常简易和灵活，能够轻易地满足业务的需求和多变的场景。

图4-1 Hive系统架构

4.1.2 Hive架构设计

Hive的体系结构如图4-2所示，可以分为以下几部分。

（1）用户接口主要有三个：CLI、Client和WUI。其中最常用的是CLI，CLI启动时会同时启动一个Hive副本。Client是Hive的客户端，用户连接至Hive Server。在启动Client模式时，需要指出Hive Server所在节点，并且在该节点启动Hive Server。WUI通过浏览器访问Hive。

图4-2 Hive系统框架

（2）Hive将元数据存储在数据库Metastore中。Metastore在功能上分为服务和存储两个部分，也就是系统框架图中提到的Metastore及其Database。Hive中的元数据包括表的名字、表的列和分区及其属性、表的属性（是否为外部表等）、表的数据所在目录等。

（3）Driver（包括解释器、编译器、优化器）完成HQL查询语句的词法分析、语法分析、编译、优化以及查询任务的生成。生成的查询任务存储在HDFS中，随后由Map Reduce调用执行。

4.1.3 Hive部署模式

Hive提供了服务和存储部署的三种模式。

内嵌模式

内嵌模式是Hive Metastore的最简单的部署方式，使用Hive内嵌的Derby数据库来存储元数据，如图4-3所示。但是，Derby只能接受一个Hive会话的访问，试图启动第二个Hive会话就会导致Metastore连接失败。

图4-3 Hive的内嵌模式

本地模式

本地模式是Metastore的默认模式，该模式下，单个Hive会话（一个Hive 服务JVM）以组件方式调用Metastore和Driver，如图4-4所示。

图4-4 Hive的本地模式

远程模式

远程模式将Metastore分离出来，成为一个独立的Hive服务（可部署多个Metastore服务），如图4-5所示。这样的模式可以将数据库层完全置于防火墙后，客户不再需要用户名和密码登录数据库，避免了认证信息的泄露。

图4-5 Hive的远程模式

4.1.4 Hive与关系型数据库比较

Hive由于采用了SQL的查询语言HQL，因此很容易被理解为数据库。其实从结构上来看，Hive和数据库除了拥有类似的查询语言，再无类似之处。数据库可以用在Online的应用中，但Hive是为数据仓库而设计的。清楚这一点，有助于我们从应用角度理解Hive的特性。

Hive和数据库的比较如表4-1所示。

表4-1 Hive和其他数据库的性能比较

（续表）

查询语言

由于SQL被广泛应用在数据仓库中，因此专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便地使用Hive进行开发。

数据存储位置

Hive是建立在Hadoop之上的，所有Hive的数据都存储在HDFS中，而数据库则可以将数据保存在块设备或者本地文件系统中。

数据格式

Hive中没有定义专门的数据格式，数据格式可以由用户指定。用户定义数据格式需要指定三个属性：列分隔符、行分隔符以及读取文件数据的方法。由于在加载数据的过程中不需要从用户数据格式到Hive定义的数据格式的转换，因此，Hive在加载的过程中不会对数据本身进行任何修改，只是将数据内容复制或者移动到相应的HDFS目录中。而不同的数据库有不同的存储引擎，定义了自己的数据格式，所有数据都会按照一定的组织存储。因此，数据库加载数据的过程会比较耗时。

数据更新

由于Hive是针对数据仓库应用设计的，而数据仓库的内容是读多、写少的，因此，Hive不支持对数据的改写和添加，所有数据都是在加载时确定好的。而数据库中的数据通常是需要经常进行修改的，因此可以使用INSERT添加数据，使用UPDATE修改数据。

索引

Hive在加载数据的过程中不会对数据进行任何处理，甚至不会对数据进行扫描，因此也没有对数据中的某些Key建立索引。Hive要访问数据中满足条件的特定值时，需要扫描整个数据表，因此访问延迟较高。由于Map Reduce的引入，Hive可以并行访问数据，因此即使没有索引，对于大数据量的访问，Hive仍然可以体现出优势。数据库中通常会针对一个或者几个列建立索引，因此对于少量特定条件数据的访问，数据库可以有很高的效率、较低的延迟。由于数据的访问延迟较高，决定了Hive不适合在线数据查询。

执行

Hive中大多数查询的执行是通过Hadoop提供的Map Reduce来实现的，而数据库通常有自己的执行引擎。

延迟

Hive在查询数据时，由于没有索引，需要扫描整个数据表，因此延迟较高。另一个导致Hive执行延迟高的因素是Map Reduce框架本身具有较高的延迟，因此在利用Map Reduce执行Hive查询时也会有较高的延迟。数据库的执行延迟相对较低，但是当数据规模大到超出数据库的处理能力时，Hive并行计算的优势就凸显出来了。

可扩展性

由于Hive是建立在Hadoop之上，因此Hive的可扩展性和Hadoop的可扩展性是一致的。而数据库由于ACID语义的严格限制，扩展行非常有限。目前最先进的并行数据库Oracle在理论上的扩展能力也只有100台左右。

数据规模

由于Hive建立在集群上可以利用Map Reduce进行并行计算，因此可以支持很大规模的数据。与之对应，数据库可以支持的数据规模较小。

4.2 Hadoop分布式数据库HBase

4.2.1 HBase简介

随着数据规模越来越大，大量业务场景开始考虑数据存储水平扩展，使存储服务可以增加、删除。而传统的关系型数据库在应对海量数据存储时会遇到瓶颈：单台机器无法负载大量数据，单台机器I/O读写请求成为大规模、高并发的数据存储请求的瓶颈；当数据进行水平扩展时，如何解决数据I/O高的一致性问题，以及如何结合Map Reduce计算框架进行海量数据的离线分析。这些都成为传统关系型数据库面临的问题。HBase是从Hadoop中分离出来的Apache顶级开源项目。HBase建立在HDFS之上，是谷歌Big Table系统的开源版本，提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。与Hadoop一样，HBase的目标是主要依靠横向扩展，通过不断增加廉价的商用服务器来增加计算和存储能力。HBase的应用场景主要是海量数据的查询以及相关操作。

4.2.2 HBase体系架构

HBase数据库采用类似于Hadoop的横向扩展方案，使用大量廉价PC机，搭建具有高性能、高扩展、高可靠的非结构化分布式数据库系统。HBase构建在开源软件HDFS上，Hadoop的Map Reduce可以用于处理HBase数据库的海量数据，依靠Zoo Keeper集群的分布式协调机制，达到为用户提供稳定服务和可靠容错的目的。

HBase采用传统的主从（Master/Slave）分布式架构，系统主要由主节点（Master）、分区服务器（Region Server）以及Zoo Keeper组成。为了提高系统的可用性，通常在系统中设置一个活跃的主节点和多个备用主节点。当活跃主节点宕机后，系统会主动切换至备用主节点。同时，系统中会有多个分区服务器节点用来存储处理数据。而Zoo Keeper主要为系统提供协同服务，以保证HBase的高可用性和容错性。HBase数据库系统的整体架构图如图4-6所示。

图4-6 HBase数据库系统的整体架构

在HBase集群体系中，各个节点之间都有相应的进程，它们相互配合，为整个系统的正常工作提供保障。根据各个节点在集群中所扮演角色的差异，在不同节点上运行的进程也不相同，具体可以分为HMaster、HRegion Server和Quorum Peer Main三种类型。HMaster对应于主节点的实例化线程，是集群的神经中枢系统，它负责管理整个HBase数据库系统集群，监控HRegion Server实时状态信息。HRegion Server是分区服务器的实例化进程，主要负责响应处理来自用户的数据操作请求，并将数据持久化在HDFS中。HMaster与HRegion Server使用专门的RPC协议，完成通信任务以及远程方法调用。同时，HMaster和HRegion Server均在其内部实现了Zoo Keeper的客户端，通过使用Zoo Keeper的客户端与Zoo Keeper集群完成通信。

4.2.3 HBase性能分析

HBase数据库的使命是为海量数据提供高性能的存储与处理能力。为了达到这个目的，HBase数据库研发团队采用的设计方案与传统关系型数据库大相径庭，采用多种方法来提高HBase数据库的性能。

存储模型

HBase数据库的存储模型分为逻辑模型和物理模型。逻辑模型是一个有序映射集，通过由行键（Rowkey）、列键（Columnkey）、列族（Column family）和列标识符（Column qualifier）以及时间戳（Timestamp）组成的映射来完成数据的定位。同时，确保在行键相同的数据记录中，最新的数据永远要出现在旧数据之前，从而达到快速访问最新版本数据的目的。使用基于行键的字典序排序的方法，将拥有不同行键的记录进行排序。物理存储模型则采用面向列族的方式进行存储，并将数据存放在HFile中。与传统关系型数据库不同的是，当某个列族数据为空时，则该列族在物理存储模型中设置为空，不存储数据。同时，一行记录不同列族的数据可以存储在不同的HFile中。这样不同的列族之间具有较高的隔离性，当某一列族数据剧增时不会影响该表其他列族的读写性能。

分区

在HBase数据库中，分区被作为HBase数据库系统管理的基本单元，系统会将表切分成多个分区来管理。用户可以在系统中定义用户表的切分策略。通常当某个分区的规模超过一定大小时，HBase数据库会自动将其分裂成两个分区。同时，系统会根据当前最新状态，将分裂出来的分区分配至系统中的某个分区服务器。HBase数据库通过采用此方法将存有海量数据的数据表划分为多个分区，将来自客户端的查询请求分配至多个分区服务器中，从而降低了处理用户请求的响应时间，提高了系统的性能。

行锁

HBase数据库并没有采用传统数据库的四级隔离级别，而是引入了行锁来保证数据的一致性。行锁机制确保在同一时刻只有一个客户端可以对HBase数据库中的同一行记录进行修改操作，降低了多个客户端长期处于阻塞状态的可能性，以此来提高系统的整体并发性能。由于放弃了四级隔离级别，从而导致HBase数据库不拥有传统关系型数据库的事务属性。

内存缓存

Mem Store是HBase数据库在内存中的缓存，客户端的所有修改操作和写入操作均记录在Mem Store中，并在Mem Store中完成数据的排序。当Mem Store文件的大小达到一定阈值时，HBase数据库会将排序完的Mem Store文件写入HDFS中，降低客户端的等待时间。

负载均衡

系统会将热点分区服务器的负载均匀分配至其他分区服务器中，从而达到提高整个系统性能的目的。用户可以在HBase数据库配置文件中指定负载均衡操作的周期。在默认配置中，HBase数据库每5分钟将对系统进行一次负载均衡操作。

4.2.4 HBase容错机制

HBase数据库假设各种故障（系统故障、网络故障、硬件故障等）经常发生，因而时刻防范故障发生，并采用不同的方法途径来确保数据的可靠性。

心跳机制

HBase将心跳检测机制应用于故障检测中。当一段时间内未接收到相关节点的心跳信息，数据库会将该节点设置为下线状态。主节点和分区服务器组件的故障恢复策略如下。

（1）HMaster同时启动多个HMaster作为备份节点，一旦活跃HMaster节点宕机，会立即通过Zoo Keeper的选举算法选出一个新的活跃HMaster，保证系统中总有一个活跃HMaster节点在运行。

（2）HRegion Server采用心跳机制，定期与Zoo Keeper进行通信。如一段时间内Zoo Keeper未收到HRegion Server的心跳信息，HMaster会将该节点诊断为宕机节点，并将该HRegion Server上所托管的分区分配至其他正常运行的节点。

冗余备份

HBase建立在HDFS之上。HDFS采用多种容错机制确保数据的正确性，主要有元数据备份、多副本冗余备份机制、心跳检测机制以及数据校验机制等。在写入时被复制多份，HDFS会将这些数据分发至不同节点进行存储，并保证这些副本不被保存在同一节点。同时，当从HDFS中读写数据时，HDFS会自动完成数据的校验工作，并修复损坏的数据。

数据恢复

HBase集群运行于分布式系统环境中。为了确保数据的完整性，HBase引入了HLog，在每次进行写操作时会把数据同时写入到HLog和Mem Store中。当HLog和Mem Store超过一定大小时，系统会将Mem Store持久化至HDFS中，并将HLog文件清空。因此，在读写过程中服务器由于某些原因出现故障时，并不会造成数据的真正丢失。因为数据同时写入HDFS，只有内存中的Mem Store数据会丢失。当主节点检测到某个区域服务器宕机后，主节点会将该区域服务器上的HLog文件分割并分发至其他区域服务器，回放HLog进行数据恢复操作。因此，一旦客户端将操作请求发送至区域服务器，区域服务器将保证这些数据被持久化，保证整个系统的可靠性。

4.3 Hadoop实时流式处理引擎Storm-YARN

4.3.1 流式处理概述

在金融、通信等领域，数据呈现出突发性、实时性等鲜明的流式特征。传统的基于Map Reduce的批处理模式难以满足流式大数据处理对计算实时性的要求。因此，低延迟、高可靠、可扩展的大数据流式计算系统具有重要的理论价值和实践意义。

流式大数据是按照时间顺序无限增加的数据序列，也可将其看成历史数据和不断增加的更新数据的合集。与传统的静态数据不同，流式大数据表现出新的特征。

（1）无限性流式数据可以抽象为一个无穷的数据序列，只要数据源处于活动状态，数据就会一直产生和持续增加下去，潜在的数据量是无限的。

（2）无序性数据流中的数据元素随机到来，系统无法控制将要处理的新到达数据元素的顺序。

（3）实时性流式数据的价值会随着时间的流逝不断减少，因此需要不断对数据处理的结果进行实时更新，保证数据实时产生、实时处理，结果及时反馈。

（4）突发性流式数据的产生完全由数据源确定，由于不同的数据源在不同时空范围内的状态不统一且发生动态变化，导致流入系统的数据流速率存在较大的不确定性。而且，数据流中常会混入错误元素。

目前业界主要采用两种模式实现大数据的分析处理：批量处理和流式处理。这两种数据处理模式的主要区别如下。

（1）批量处理采用先存储后处理的模式，即需要首先完成数据累积和落地，然后再对静态数据进行集中计算和价值发现；而流式处理则采用直接处理的模式，当数据流到达后直接在内存中对数据进行计算并及时反馈结果，无需对其先进行存储，从而避免数据堆积和丢失。

（2）批量处理通过调度批量任务来操作静态数据，当任务启动时，一般数据已经到位（如保存在分布式文件系统上）；而流式处理则是针对数据流进行操作。流式计算系统在启动时，一般数据并没有完全到位，而是由外部源源不断地流入，数据到达时刻和到达顺序都是未知的，因此很难准确掌握整个数据的全貌。

（3）批量处理注重的是数据处理的吞吐量，同时对数据的全面性和准确性有较高要求，相对而言，对计算延迟要求并不严格；而流式处理更加注重数据处理的速度和实时性，处理响应时间一般在数百毫秒到数秒之间，对计算精确度的要求较为宽松。

4.3.2 Storm简介

Storm是一个开源的分布式实时计算系统，利用Storm可以很容易做到可靠地处理无限的数据流，支持任何编程语言，支持创建拓扑结构来转换没有终点的数据流，转换从不停止。Storm常用在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域，部署管理也非常简单。

数据流

数据流（Streams）是Storm中最核心的抽象概念。一个数据流是在分布式环境中并行创建、处理的一组元组（Tuple）的无界序列。数据流可以由一种能够表述数据流中元组的域（Fields）的模式来定义。在默认情况下，元组包含有整型（Integer）数字、长整型（Long）数字、短整型（Short）数字、字节（Byte）、双精度浮点数（Double）、单精度浮点数（Float）、布尔值以及字节数组等基本类型对象。而且，数据流也允许用户自定义元组类型。

数据源

数据源（Spout）是拓扑中数据流的来源。一般数据源会从一个外部的数据源读取元组，然后将它们发送到拓扑中。根据不同的需求，数据源既可以定义为可靠的数据源，也可以定义为不可靠的数据源。一个可靠的数据源能够在它发送的元组处理失败时重新发送该元组，以确保所有元组都能得到正确的处理。相应地，不可靠的数据源在元组发送之后不会对元组进行任何其他处理。

一个数据源可以发送多个数据流。数据源中的关键方法是下一个元组（Next Tuple）。顾名思义，下一个元组要么会向拓扑中发送一个新的元组，要么会在没有可发送的元组时直接返回。

数据流处理组件

拓扑中所有的数据处理均是由组件（Bolt）完成的。通过数据过滤（Filtering）、函数处理（Functions）、聚合（Aggregations）、联结（Joins）、数据库交互等功能，组件几乎能够完成任何一种数据处理需求。复杂的数据流变换通常需要使用多个组件并通过多个步骤完成。与数据源相同，组件也可以输出多个数据流。

数据流分组

为拓扑中每个组件确定输入数据流是定义一个拓扑的重要环节。数据流分组（Stream Groupings）定义了在组件的不同任务中划分数据流的方式。Storm有八种内置的数据流分组方式，分别为随机分组（Shuffle Grouping）、域分组（Fields Grouping）、部分关键字分组（Partial Key Grouping）、全复制分组（All Grouping）、全局分组（Global Grouping）、不分组（None Grouping）、指向型分组（Direct Grouping）、本地或随机分组（Local or Shuffle Grouping）；也支持用户通过Custom Stream Grouping接口实现自定义的数据流分组模型。

任务

在Storm集群中，每个数据源和组件都由若干个任务来执行，每个任务都与一个执行线程相对应。用户可以设置数据源和组件的并行度，再由数据流分组决定如何由一组任务向另一组任务发送元组。

可靠性

Storm通过跟踪由数据源发出的每个元组构成的元组树来确保每个发送的元组都能得到正确处理。每个拓扑都有一个“消息延时”参数，如果在延时时间内没有检测到元组是否处理完成，就会将该元组标记为“处理失败”，并在稍后重新发送该元组。

工作进程

拓扑是在一个或多个工作进程（Worker Processes）中运行的。每个工作进程都是一个实际的JVM进程，执行拓扑的一个子集。例如，如果拓扑的并行度定义为300，工作进程数定义为50，那么每个工作进程就会执行6个任务（进程内部的线程）。Storm会在所有的工作进程中分散任务，以便实现集群的负载均衡。

4.3.3 Storm架构

Storm主要通过三个部件来运行拓扑，分别为工作进程（Worker）、执行线程（Executor）及任务（Task）。它们之间的相互关系如图4-7所示。

图4-7 Storm拓扑架构

执行器是由工作进程生成的线程。在执行器中可能会有一个或者多个任务，任务是实际执行数据处理的最小工作单元，这些任务都是为同一个组件服务的。

原生的Storm项目是难以与Hadoop相融合的，直到2013年6月Storm on YARN项目的推出，才使Storm融合进Hadoop，增强Hadoop系统的流数据处理能力。

Storm on YARN支持Storm应用利用Hadoop计算节点的计算资源。YARN根据需求启动Storm应用的主节点Nimbus，并支持Nimbus为Storm应用的工作节点（Supervisor）请求资源。此外，Storm on YARN支持Storm应用可以直接访问存储在HDFS和HBase上的Hadoop数据。

4.3.4 Storm与Spark Streaming比较

Spark Streaming是对核心Spark API的一个扩展，能够实现对实时数据流的流式处理，并具有很好的可扩展性、高吞吐量和容错性。它与Storm都是分布式的数据流式实时处理的开源框架，但也有一些很重要的差异。

数据处理模型和数据延迟性

虽然两种框架都提供了系统的可扩展性和可容错性，但它们的数据处理模型是不一样的，而这决定了各自不同的实时性。Storm可以实现真正实时地处理流式数据，延迟在秒级以下，实时性很高。而Spark Streaming的本质是微批量处理，在较短的时间窗口内进行数据实时处理，通常延迟在秒级左右，实时性相对较弱。

数据保护和容错能力

在数据容错能力方面，Spark Streaming做得比Storm好一些，它的容错是通过状态记录去实现的，能够保证每个批处理的所有数据只处理一次，保证数据不会在恢复时错乱。Storm通过标记每一条数据来跟踪数据的处理情况，只能保证每条数据被处理一次，但实际情况是在发生错误时，这条数据是被处理多次的。这意味着更新多次时可能会导致数据不正确。

框架实现和编程API

Storm是用Clojure编写的，而Spark Streaming则是用Scala。在语言支持上，Storm提供了Java API，同时也支持多语言；Spark Streaming支持Scala、Java、Python等几种语言。Storm可以在Mesos上运行，Spark Streaming可以在YARN和Mesos上运行。

综上所述，在实际应用中如果打算使用现有Hadoop或者Mesos集群，或者既定流程需要涉及与图形处理、SQL访问、批量处理相关的其他实质性要求，那么Spark值得优先考虑；如果需求主要集中在流式处理与复杂事件处理（CEP式）处理层面，而且需要从零开始为项目构建一套目标明确的集群设施，那么推荐选择Storm。

4.4 Hadoop交互式查询引擎 Impala

4.4.1 Impala简介

Hadoop及其数据仓库Hive方便了大数据的日常处理，但是它们处理大数据的时延较长，而且时延的问题在大数据增长速度越来越快的情况下尤为凸显。针对此问题，谷歌专门对外提供了实时大数据查询服务Dremel，并迅速被多家公司的产品借鉴，包括Cloudera。之后，Cloudera公司发布了Impala，其实就是Hadoop的Dremel。

Impala用来实现SQL on Hadoop，实现对海量数据的实时查询分析，它的优势包括以下几个方面。

快速

Impala可以方便地执行SQL语句，在数秒内返回查询分析结果。执行速度和HDFS或HBase上存储的数据的规模、对Impala系统的配置调优情况及SQL语句的执行效率有关。

灵活

Impala可以直接查询存储在HDFS上的原生数据，也可以查询经过优化设计而存储的数据，只要数据的格式能够兼容Map Reduce、Hive、Pig等。

整合与开放

Impala可以非常容易地与Hadoop系统整合，不需要将数据迁移到特定的存储系统就能满足查询分析的要求。

可伸缩性

Impala可以很好地与一些BI应用系统协同工作，如Microstrategy、Tableau、Qlikview等。

与Hive相比，Impala处理数据的速度更快。相对于传统的Map Reduce来说，Impala提供了高效率、便捷的大数据查询服务。但由于Impala使用HQL作为其查询语言，使其表达能力受限，所以始终不能完全地替代Map Reduce。

4.4.2 Impala架构分析

Impala是Cloudera公司开发的大数据查询系统，提供SQL语义，能够查询存储在Hadoop的HDFS和HBase中的PB级大数据。虽然Hive系统也提供了SQL语义，但是由于Hive底层执行使用的是Map Reduce引擎，仍然是一个批处理过程，难以满足查询的交互性。因此，Impala的最大特点也是最大卖点就是它的快速查询。那么，Impala如何实现大数据的快速查询呢？在回答这个问题之前需要先介绍Dremel系统，因为Impala最开始就是参照Dremel系统进行设计的。

Dremel是谷歌开发的交互式数据分析系统，它构建在谷歌的GFS等系统之上，支持谷歌的数据分析Big Query等诸多服务。Dremel的技术亮点主要有两个：一是实现了嵌套型数据的列存储；二是使用了多层查询树，使任务可以在数千个节点上并行执行和聚合结果。列存储可以减少查询时处理的数据量，有效地提升查询效率。Dremel列存储的不同之处在于，它针对的并不是传统的关系数据，而是嵌套结构的数据。Dremel可以将一条条嵌套结构的记录转换成列存储形式，查询时根据查询条件读取需要的列，然后进行条件过滤；输出时再将列组装成嵌套结构的记录输出，记录的正向和反向转换都通过高效的状态机实现。Dremel的多层查询树则借鉴了分布式搜索引擎的设计。查询树的根节点负责接收查询，并将查询分发到下一层节点。底层节点负责具体的数据读取和查询执行，然后将结果返回上层节点。

Impala使用的列存储格式是Parquet。Parquet实现了Dremel中的列存储，未来还将支持Hive并添加字典编码、游程编码等功能。Impala使用了Hive的SQL接口，包括SELECT、INSERT、Join等操作，但目前只实现了Hive的SQL语义的子集，表的元数据信息存储在Hive的Metastore中。

Impala的系统架构如图4-8所示，主要包含查询策划（Query Planner）、查询调度器（Query Coordinator）和查询执行引擎（Query Exec Engine）三个模块。查询策划接收来自SQL App和 ODBC的查询请求，然后将查询转换为许多子查询。查询调度器将这些子查询分发到各个节点上，由各个节点上的查询执行引擎执行，最后返回子查询的结果，这些中间结果经过聚集之后最终返回给用户。State Store是Impala的一个子服务，用来监控集群中各个节点的健康状况，提供节点注册、错误检测等功能。

图4-8 Impala系统架构

4.4.3 Impala与Hive比较

Impala与Hive都是构建在Hadoop之上的数据查询工具，二者有很多的共同之处，如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。同时，二者各有不同的侧重适应面，Hive适用于长时间的批处理查询分析，而Impala适用于实时交互式SQL查询，给数据分析人员提供了快速实验、验证想法的大数据分析工具。

相比Hive，Impala的查询效率有了数量级的提升。从技术上分析，Impala之所以能有好的性能，主要有以下几个方面的原因。

（1）不需要把中间结果写入磁盘，省掉了大量的I/O开销。

（2）直接通过相应的服务进程来进行作业调度，省掉了Map Reduce作业启动的开销（默认每个心跳间隔是3秒钟）。

（3）完全抛弃了Map Reduce不太适合做SQL查询的范式，而是像Dremel一样借鉴了MPP并行数据库的思想，做查询优化，从而能省掉不必要的排序等开销。

（4）统一编译运行时代码，避免了为支持通用编译而带来的不必要开销。

（5）用C++实现，做了很多有针对性的硬件优化，如使用SSE指令等。

虽然Impala是参照Dremel来实现的，但是Impala也有一些自己的特色。例如，Impala不仅支持Parquet格式，同时也可以直接处理文本、顺序文件等Hadoop中常用的文件格式。Impala是开源的，再加上Cloudera在Hadoop领域的领导地位，可以预见在不久的未来，Impala很可能像之前的Hadoop和Hive一样在大数据处理领域大展拳脚。Cloudera自己也说期待未来Impala能完全取代Hive。当然，用户从Hive上迁移到Impala上是需要时间的。而且，Impala也只是刚刚发布1.0版，相信仍然有很多可改进的空间。需要说明的是，Impala并不是用来取代已有的Map Reduce系统，而是作为Map Reduce的一个强力补充。因为受限于内存大小，Impala适合用来处理输出数据适中或比较小的查询。而对于大数据量的批处理任务，Map Reduce依然是不错的选择。

第5章

Spark内存计算框架

5.1 内存计算与Spark

5.1.1 内存计算概念

大数据处理的挑战，实质上是由信息化设施的处理能力与数据处理的问题规模之间的矛盾引起的。大数据所表现出的增量速度快、时间局部性低等特点客观上加剧了矛盾的演化，使以计算为中心的传统模式面临着内存容量有限、I/O压力大、缓存命中率低、数据处理的总体性能低等诸多挑战，难以取得性能、能耗与成本的最佳平衡。

对此，在体系结构方面，工业界和学术界通过使用多核处理器及分布式集群，增加协同处理器和GPU，使用大内存，增加I/O通道等方式来应对。然而，大内存、多核处理器等能耗超高。在编程模型方面，以Map Reduce、Hadoop为代表的分布式编程框架有很好的可扩展性和容错性。但是，它需要从磁盘获取数据，再将中间结果数据写回磁盘，导致系统的I/O开销极大，不适用于具有实时性需求的应用。为了解决I/O开销大的问题，近些年又衍生出许多In-Memory Map Reduce系统，即不再把Map结果写入磁盘，而是将其写入内存，这就避免了过多的I/O操作，减少了开销。

近年来，多核CPU的快速发展、内存价格的不断下降以及系统架构的不断演进，在硬件方面为大数据处理提供了有利的条件。SAP公司在2012年推出的HANA内存计算及加州大学伯克利分校开发的Apache Spark，使内存计算再次得到学术界和工业界的广泛关注。内存计算解决了前面提到的大数据时代数据处理速度以及时效性的问题，其原因在于在内存计算模式下，所有的数据在初始化阶段全部加载到内存中，数据及查询的操作都在高速内存中执行，CPU直接从内存读取数据，进行实时计算和分析，减少了磁盘数据访问，降低了网络与磁盘I/O的影响，大幅提升了计算处理的数据吞吐量与处理的速度，减少了原本占大量计算资源的I/O开销。通过内存计算的应用，避免了I/O瓶颈。以前在数小时、数天时间内计算的结果，在内存计算环境中可以在数秒内完成。

由于大数据是一种以数据为中心的数据密集型技术，现有的以计算为中心的技术难以满足大数据的应用需求。因此，整个IT架构的革命性重构势在必行。随着新型非易失性存储器件的出现和成本的不断走低，客观上为设计以数据为中心的大数据处理模式，即内存计算模式创造了机会。随着内存价格大幅下跌，内存容量增长，这就更利于将信息存入专用服务器内存，而不是存储速度更慢的磁盘。它能帮助商务用户快速地进行模式识别，及时分析大数据，即所谓的内存计算。内存计算不仅是把数据驻留内存，还需要对软件体系、计算模型等进行专门的设计。因此，内存计算主要有以下特性。

（1）拥有大容量内存，可将待处理数据尽量全部存放于内存当中。内存可以是单机内存或者分布式内存，而且单机内存要足够大。

（2）具有良好的编程模型和编程接口。

（3）主要面向数据密集型应用，数据规模大，处理实时性要求高。

（4）大多支持并行处理数据。

综上所述，内存计算是以大数据为中心，依托计算机硬件的发展，依靠新型的软件体系结构，即通过对体系结构及编程模型等进行重大革新，将数据装入内存中处理，而尽量避免I/O操作的一种新型的以数据为中心的并行计算模式。在应用层面，内存计算主要用于数据密集型计算的处理，尤其是数据量极大且需要实时分析处理的计算。这类应用以数据为中心，需要极高的数据传输及处理速率。因此，在内存计算模式中，数据的存储与传输取代了计算任务成为新的核心。

内存计算与传统的内存缓存有着较大的区别，主要体现在数据在内存中的存储和访问方式上。在内存计算中，数据长久地存储于内存中，由应用程序直接访问。即使当数据量过大导致其不能完全存放于内存中时，从应用程序视角看，待处理数据仍是存储在内存当中的，用户程序同样只是直接操作内存，而由操作系统、运行环境完成数据在内存和磁盘间的交换。而内存缓存利用部分内存缓存磁盘/文件数据，应用程序通过文件系统接口访问缓存中的数据，而不是像内存计算那样直接访问。因此，内存计算和传统的内存缓存都可以通过减少I/O操作提升系统性能。内存计算支持数据直接访问，效率更高，也更适合大数据应用；缺点是不像传统内存缓存那样对应用程序透明，通常需要专门的编程模型和接口支持。

5.1.2 内存计算分类

内存计算系统结构和实现方法在很大程度上取决于底层硬件架构，更准确地说，取决于底层内存架构。根据内存计算所依托硬件架构的不同，内存计算分为以下3类。

基于单节点的内存计算

单节点内存计算系统运行于单个物理节点上，节点拥有一个或多个处理器以及共享内存。内存结构可以是集中式共享内存，或者非一致性共享内存（Non-Uniform Memory Access，NUMA）。单节点上的内存计算利用多核CPU，采用大内存和多线程并行，优化磁盘读取以充分发挥单机的计算效能。

相对于分布式内存计算而言，单节点内存计算资源利用率高、处理效率高，不需要管理集群及考虑容错，也不存在节点间通信的巨大开销，系统性能也具有较强的可预估性。从编程者的角度来看，调试及优化算法比分布式更容易，缺点是单节点CPU、内存等资源有限，在单节点计算机上处理现实世界的大数据很可能面临内存不足的情况。

基于分布式系统的内存计算

单节点内存计算受硬件资源限制，在处理更大规模数据时面临硬件可扩展方面的问题。在以Map Reduce为代表的大规模分布式数据处理技术快速发展的背景下，人们也开始在分布式系统上实现内存计算。这种内存计算利用多台计算机构成的集群构建分布式大内存，通过统一的资源调度使待处理数据存储于分布式内存中，实现大规模数据的快速访问和处理。

其中，以Spark为代表的内存数据处理系统从支持大数据应用的角度出发，主要面向迭代式数据处理、实时数据查询等应用，通过提供编程模型/接口以及运行环境，支持这些应用在内存中进行大规模数据的分析处理和检索查询。其处理机制是首先将待处理数据从磁盘读入内存，然后进行反复的迭代运算，即除了第一次需要涉及I/O操作，此后便一直从内存读写数据。此类内存计算不涉及预取数据，而且在内存管理方面使用内存替换策略也非常高效，因此在很大程度上提高了处理效率。

新型混合内存结构的内存计算

近几年，新兴的非易失性随机存储介质（Non-Volatile Memory，NVM）快速发展。如铁电存储器（Fe RAM）、相变存储器（PCM）、电阻存储器（RRAM）等，其性能接近DRAM，但容量远远大于DRAM，而且能耗和价格远远低于DRAM。这为新型内存体系结构的发展提供了良好的硬件保障。因此，基于新型存储器件和传统DRAM的新型混合内存体系在大幅提升内存容量、降低成本的同时，其访问速度与DRAM相当。

在众多的非易失性随机存储介质中，PCM凭借其非易失性、非破坏性读、读完无需回写、写操作无需先擦除、存储密度高等特性，逐渐成为大规模内存系统中颇具潜力的DRAM替代品。在硬件体系结构方面，围绕PCM和DRAM的混合方案包括线性统一编址混合内存、以DRAM为PCM缓存的混合内存和分层混合内存。

新型混合内存解决了磁盘I/O的瓶颈问题。因此，在内存计算当中，传统的编程模型对数据传输不再占大量处理时间，而数据处理将占据大量处理时间。此外，由于新型非易失性内存的I/O延迟远小于磁盘，传统模型中磁盘与内存的数据一致性等问题不复存在，编程模型也因此有相应改变。

5.1.3 Spark与内存数据处理系统

近些年出现了众多内存计算的框架/系统，最具影响力的是加州大学伯克利分校开发的Spark，它适用于迭代式及交互式的数据批处理应用。其原理是将数据第一次从磁盘读入内存，生成一种抽象的内存对象，即弹性分布式数据集（Resilient Distributed Datasets，RDD），用户程序只操作在内存当中的RDD，计算过程只涉及内存读写，因此大幅提升了数据处理效率。

Map Reduce在处理数据的方便使用性、扩展性和可靠性方面表现出非常好的性能。使用Map Reduce可以专注于业务逻辑，不必关心一些传统模型中需要处理的复杂问题，如并行化、容错、负载均衡等。由于Hadoop通过HDFS读写数据，在进行多轮迭代计算时速度很慢。随着需要处理的数据越来越大，提高Map Reduce性能变成了一个迫切的需求，Spark便是在这种背景下应运而生的。

Spark主要针对多轮迭代中的重用工作数据集（如机器学习算法）的工作负载进行优化，主要特点为引入了内存集群计算的概念，将数据集缓存在内存中以缩短访问延迟。Spark编程数据模型为弹性分布式数据集的抽象，即分布在一组节点中的只读对象集合。数据集合通过记录来源信息帮助重构以达到可靠的目的。一个弹性分布式数据集可以从文件中创建。

Spark中的应用程序可实现在单一节点上执行的操作或在一组节点上并行执行的操作。对于多节点操作，Spark依赖于Mesos集群管理器。Mesos能够对底层的物理资源进行抽象，并且以统一的方式提供给上层的计算资源。通过这种方式可以让一个物理集群提供给不同的计算框架使用。Spark使用内存分布数据集，除了能够提供交互式查询之外，还可以优化迭代工作负载，几乎可以将所有数据都保存在内存中，因而大大提高了系统的整体性能。

5.2 Spark概述

5.2.1 Spark架构

Spark架构如图5-1所示。

图5-1 Spark架构

Spark Core

Spark是一个大数据分布式编程框架，不仅实现了Map Reduce的Map函数和Reduce函数及计算模型，还提供了更丰富的算子，如Filter、Join、Group By Key等。Spark将分布式数据抽象为弹性分布式数据集，将计算任务转化为有向无环图，分阶段进行有向无环图的调度和分布式并行处理，从而实现应用任务调度、RPC、序列化和压缩，并为运行在其上的上层组件提供API。由于底层采用Scala语言实现，因此所提供的API提供与Scala类似的编程接口。

Spark SQL

Spark SQL是Spark用来处理结构化数据的包，支持用户通过SQL语句查询数据，支持多种数据源，包括Hive表、Parquet和JSON。除了为Spark提供SQL接口之外，Spark SQL支持SQL与复杂分析的结合，如将SQL查询和由RDDs通过Python、Java和Scala支持的数据编程操作混合进一个单一的应用中。正是Spark SQL这种与计算密集型环境紧密集成的特点，使Spark不同于任何其他开源的数据仓库工具。

Spark Streaming

Spark Streaming是Spark进行流式数据实时计算的组件。生产环境中的网页服务器日志，或者网络服务中用户提交的状态更新组成的消息队列，都是数据流。Spark Streaming提供了用来操作数据流的API，并且与Spark Core中的RDD API高度对应，支持与Spark Core同级别的容错性、吞吐量以及可伸缩性。

Spark MLlib

Spark中还包含一个提供常见机器学习（ML）功能的程序库MLlib。MLlib提供多种机器学习算法，包括分类、回归、聚类、协同过滤等；提供模型评估、数据导入等功能；还提供一些更底层的机器学习原语，包括一个通用的梯度下降优化算法。

Spark Graph X

Spark Graph X是一个分布式图处理框架，基于Spark平台提供对图计算和图挖掘的接口。Spark Graph X提供了一套图算法工具包，支持Page Rank、数三角形、最大连通图和最短路径等多种经典的图算法，满足了用户对分布式图处理的需求，方便用户对图的分析。

5.2.2 Spark的RDD模型

RDD是一个容错的、并行的数据结构，可以让用户显式地将数据存储到磁盘和内存中，并能控制数据的分区。RDD还提供一组操作来支持常见的数据运算，如高度契合Scala集合操作的Join、Group By、Reduce By Key等，为方便数据处理提供的Map、Flat Map、Filter转换操作等。RDD混合了交互数据挖掘、流式处理、Map Reduce等几种常见的数据处理模型，提供支持数据共享的高效原语，使Spark可以应用于各种大数据处理场景。

从本质上看，RDD作为数据结构，是一个只读的分区记录集合。一个RDD可以包含多个分区，每个分区就是一个数据集片段。用户可以控制RDD分区，并为某个RDD制定存储策略。

5.2.3 Spark与Hadoop的性能对比

计算效率

Hadoop不适合进行迭代运算，因为Map Reduce无法对计算中的数据进行重复利用，所以每次迭代Hadoop都要花费大量时间从磁盘中读写数据。而Spark把中间数据放到内存中，在整个迭代运算中只需要读写一次，比Hadoop有着更高的速度和效率，但是也占用了更多的内存空间。

灵活性

Spark提供多种数据集的操作类型，用户可以命名RDD、控制中间结果的存储、分区等，编程模型比Hadoop更灵活。各个处理节点间进行通信时，Hadoop仅提供Data Shuffle一种模式，而Spark支持多种通信模型。这些都给开发上层应用的用户提供了便利。

容错性

RDD使用血统图（Lineage）进行容错，记录跟踪所有生成RDD的转换也就是记录每个RDD的血统，当分区失效时重新计算丢失的那些RDD分区。RDD对数据集中所有的元素进行相同操作的批处理，可以高效地记住每一次变换，从而不需要对大量数据做日志记录便可恢复失效分区，不需要回滚整个程序，没有检查点开销，还可以在不同节点上并行执行。

5.3 Spark核心组件介绍

5.3.1 Spark SQL

Spark SQL的前身是Shark，是伯克利实验室Spark生态环境的组件之一，是一款支持SQL-on-Hadoop的工具。它修改了Hive的内存管理、物理计划、执行三个模块，并使其能运行在Spark引擎上，从而使SQL查询的速度提升10~100倍。但是，随着Spark的发展，Shark对于Hive的太多依赖（如采用Hive的语法解析器、查询优化器等）制约了Spark各个组件的相互集成，所以Spark SQL项目出现了。Spark SQL抛弃原有Shark的代码，汲取了Shark的一些优点，如内存列存储（In-Memory Columnar Storage）、Hive兼容性等，重新开发了Spark SQL代码。由于摆脱了对Hive的依赖性，Spark SQL在数据兼容、性能优化、组件扩展方面都得到了极大的方便。

查询引擎Catalyst是Spark SQL的调度核心，它遵循传统数据库的查询解析步骤，首先对SQL进行解析，然后转换为逻辑查询计划、物理查询计划，最终转换为Spark的有向无环图后再执行。

5.3.2 Spark MLlib

MLlib是Spark的机器学习库，由一些通用的学习算法和工具组成，包括分类、回归、聚类、协同过滤、降维等，同时还包括底层的优化原语和高层的管道API。MLllib分为两个代码包：spark.mllib包含面向RDD的原始算法API；spark.ml则提供了面向数据集的高层次API，可以用来构建机器学习管道。官方推荐使用的是spark.ml，因为数据集对RDD做了更深一层的优化，更加通用，而且灵活。在开发中，如果新的算法能够适用机器学习管道的概念，就会被放到spark.ml包中。

MLlib主要包含三个部分。

（1）底层基础：包括Spark的运行库、矩阵库和向量库。

（2）算法库：包括广义线性模型、推荐系统、聚类、决策树和评估的算法。

（3）实用程序：包括测试数据的生成、外部数据的读入等功能。

5.3.3 Spark Graph X

Graph X最初是伯克利实验室的一个分布式图计算框架项目，后来整合到Spark中成为一个核心组件，用于图计算和图并行计算。和其他分布式图计算框架相比，Graph X最大的贡献是在Spark之上提供一站式数据解决方案，可以方便且高效地完成图计算的一整套流水作业。它提供的API可以认为是Graph Lab（C++）和Pregel（C++）在Spark（Scala）上的重写及优化。

Graph X的目标是实现图并行（Graph-Parallel）和数据并行（Data-Parallel）在系统中的统一，使系统拥有唯一的组合API。Graph X允许用户将数据当作一个图和一个RDD，而不需要数据移动或者复制。

性能方面，Graph X整体上比Graph Lab慢很多倍，主要由两方面的原因引起。

（1）Graph X跑在JVM上，没有C++快。

（2）Graph Lab不受Spark框架的限制，可以通过线程来共享内存。

Graph X融合了图并行以及数据并行的优势，虽然在单纯的计算阶段的性能不如Graph Lab等计算框架，但是从整个图处理流程的角度看，其性能具有明显的竞争优势。

5.3.4 Spark Streaming

Spark Streaming能够实现Spark对实时数据流的流式处理，支持从多种数据源提取数据，如Kafka、Flume、Twitter、Zero MQ、Kinesis以及TCP套接字，并且可以提供一些高级API来表达复杂的处理算法，如Map、Reduce、Join和Window等，还支持将处理完的数据推送到文件系统、数据库或者实时仪表盘中展示。在实际运用中，可以将Spark的机器学习和图计算的算法直接应用于Spark Streaming的数据流中。

Spark Streaming的工作原理如图5-2所示。Spark Streaming从实时数据流接入数据，将其划分为一个个小批量数据，再供后续Spark Engine处理。所以，Spark Streaming实际上是按一个个小批量来处理数据流的。

图5-2 Spark Streaming工作原理

Spark Streaming为这种持续的数据流提供了一个高级抽象，即离散数据流（Discretized Stream，DStream）。离散数据流既可以从输入数据源创建得来，如Kafka、Flume或者Kinesis，也可以从其他离散数据流经一些算子操作得到。在系统内部，一个离散数据流包含一系列RDDs。

5.4 Spark集群管理

5.4.1 Spark部署方式

设计者希望Spark可以高效地在一个计算节点到数千个计算节点之间伸缩，同时具有最大的灵活性。因此，Spark支持在各种集群管理器上运行，包括Hadoop YARN、Apache Mesos，并且自带独立调度器。如果要在没有预装任何集群管理器的机器上安装Spark，那么Spark自带的独立调度器可以让安装者轻松入门；如果已经有了一个装有Hadoop YARN或Apache Mesos的集群，通过Spark对这些集群管理器的支持，应用也同样能运行在这些集群上。所以，在实际部署时可以根据实际情况来选择集群管理器的具体实现。

独立部署

独立部署模式（Spark Standalone）使用的是Spark原生的资源管理。在这种模式下，集群启动时包括服务器与工作节点，其中服务器作为集群管理器使用，负责接收客户端提交的作业，管理工作节点。

Mesos集群部署

在Mesos集群中，Mesos 服务器将替换Spark 服务器成为集群管理器。如果一个Spark驱动程序提交一个作业，并开始分发调度作业相关的任务，将会由Mesos来决定每个任务分发到哪台机器上。

Spark on YARN部署

Spark在YARN上运行时支持两种方式：YARN集群模式和YARN客户端模式。在YARN集群模式下，Spark驱动器在YARN 应用服务器中运行，客户端可以在Spark应用启动之后关闭退出。而在YARN客户端模式下，Spark驱动器在客户端进程中运行，这时的YARN应用服务器只用于向YARN申请资源。一般情况下，YARN集群模式更适合线上环境，YARN客户端模式更适合用户交互和调试环境。

经过对比，Mesos集群部署似乎是更好的Spark部署选择，也是官方推荐的部署模式。但如果需要同时运行Hadoop和Spark，从兼容性上考虑，YARN作为Hadoop的原生组件是更好的选择；如果集群上不仅运行了Hadoop、Spark，还需要处理容器的管理问题，Mesos会更加适用；而独立部署则适合小规模的计算集群。

5.4.2 Spark资源调度

Spark支持多种计算资源的调度方式。在Spark应用内部，默认使用先进先出机制（First In First Out，FIFO）调度各个作业，也可以支持公平调度机制（Fair Scheduler）。如果在多用户共享的集群上运行，每个Spark应用都会获得一批独占的执行器进程来运行其任务并存储数据，由集群管理器提供Spark应用之间的资源调度。

静态划分

每个Spark应用设定一个最大可用资源总量，并且在整个生命周期内都独占这些资源。这种方式在Spark独立部署、YARN调度以及Mesos粗粒度模式（Coarse-grained Mesos Mode）下都可用。

独立部署

默认情况下，Spark应用在独立部署的集群中会以FIFO模式顺序提交作业，而且每个Spark应用都会占用集群中的所有可用节点；也支持通过设置来限制单个应用所占用的节点个数、CPU的使用数量、内存占用量。

YARN

在YARN集群上可以使用num-executors选项来控制Spark应用在集群中分配的执行器个数，对于单个执行器所占用的资源可以使用Executor-memory和Executor-cores来控制。

Mesos

在Mesos集群上，如果使用静态划分，需要将spark.mesos.coarse设为true，同样也需要设置spark.cores.max来控制各个应用的CPU总数和spark.executor.memory来控制各个应用的内存占用。另一种方式是动态共享CPU，每个Spark应用的内存占用是固定且独占的。但是，如果该Spark应用没有在某个机器上执行任务，那么其他应用可以占用该机器上的CPU。这种模式对集群中有大量不是很活跃的应用场景非常有效，但不适用于低延迟的应用场景，因为当Spark应用需要使用CPU时，可能需要等待一段时间才能取得CPU的使用权。

Spark还提供了一种基于负载来动态调节Spark应用资源占用的机制，即应用会在资源空闲时将其释放给集群，而后续用到时再重新申请。这种机制特别适用于多个应用共享Spark集群资源的情况。

5.4.3 Spark任务调度

Spark调度器根据RDD的结构信息为每个动作确定有效的执行计划，同时考虑哪些RDD分区是缓存在内存中的。调度器根据目标RDD的血统图创建一个由任务阶段（Stage）构成的有向无环图，每个阶段内部尽可能多地包含一组具有窄依赖关系的转换并将它们管道化。阶段的边界有两种情况：一是宽依赖上的Shuffle操作；二是用已缓存分区来缩短父RDD的计算过程。

图5-3为一个Spark划分任务阶段的案例。其中，实线方框表示RDD，实心矩形表示分区（黑色表示该分区被缓存）。要在RDD G上执行一个动作，调度器根据宽依赖创建一组阶段，并在每个阶段内部将所有窄依赖管道化。

图5-3 Spark任务阶段划分

调度器根据数据存放的位置分配任务，以最小化通信开销。如果某个任务需要处理一个已缓存分区，则直接将任务分配给拥有这个分区的节点。否则，如果需要处理的分区位于多个可能的位置（例如，由HDFS的数据存放位置决定），则将任务分配给这一组节点。

如果某个任务失效，只要阶段中的父RDD分区可用，则只需在另一个节点上重新运行这个任务即可。如果某些阶段不可用，则需要重新提交这个阶段中的所有任务来计算丢失的分区。

第6章

大数据可视化技术

大数据时代，数据的海量化特征越来越明显。这些数据散落在政府及企业各个系统的不同功能模块中，并且越积越多。这就给我们提出了一个问题：在数据的海洋里，如何才能不迷失方向并捕捉到大鱼呢？一个有效的方法就是让数据来说话。

（1）让数据说有用的话。通过深入分析数据，挖掘数据的内涵，把握事物的内在规律，而不是停留在数据的表层，不说大话、空话或套话。

（2）让数据说人容易听懂的话。将分析挖掘得到的隐含在数据背后的价值用容易让人理解、认同的方式表达出来，如使用文字、图表、图形进行可视化展示，而不是使用那些对于非数据专业人士而言深奥难懂的形式来表达。

企业拥有数据的规模和有效利用数据的能力将成为其核心竞争力的重要组成部分，也将决定其大数据应用水平的高度。我国有句俗话：“巧妇难为无米之炊。”做顿好饭，要米、锅和巧媳妇三者俱备。类比大数据应用，“米”代表数据，“锅”代表大数据平台，“巧媳妇”代表具备洞察数据能力的人，而可视化技术就是帮助“媳妇”荣升为“巧媳妇”的一大法宝。

6.1 数据可视化的基本概念

数据可视化出现于20世纪50年代，是关于数据视觉表现形式的科学技术研究。它利用计算机图形学和图像处理技术，将数据转换成图形或图像在屏幕上显示出来，并提供人机交互界面，对数据加以可视化解释。数据可视化涉及计算机图形学、图像处理、计算机视觉、人机交互等多个领域，是研究数据相关问题的一项综合技术。

随着计算机技术的发展，数据可视化的概念也在不断演变中快速扩展。

1987年，布鲁斯·麦考梅克、托马斯·德房蒂和玛克辛·布朗所编写的《Visualization in Scientific Computing》强调了新的基于计算机的可视化技术方法的必要性，因而有了科学可视化。关于科学可视化，布鲁斯·麦考梅克给出的定义为：“利用计算机图形学来创建视觉图像，帮助人们理解科学技术概念或结果的那些错综复杂而又往往规模庞大的数字表现形式。”科学可视化处理的对象包括医学、建筑学、气象学、生命科学等领域中具有空间几何特征数据的时空现象，对测量、实验等获得的数据进行可视化分析。科学可视化包含体可视化、流场可视化以及医学数据可视化等。

20世纪90年代初期随着互联网及电子商务的迅速发展，人们又提出了信息可视化的概念。信息可视化旨在研究非空间数据的视觉呈现方法和技术。不同于科学可视化，信息可视化更侧重于对抽象数据集的可视化。由于信息时代正带给人们前所未有的复杂海量信息，信息可视化能够帮人们理解和分析大规模的非数字型信息资源，并实现与用户的快速交互。因此，信息可视化已成为商业、管理、金融、传媒等领域不可或缺的一部分。

数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元元素表示，大量的数据集构成数据图像，同时将数据的各个属性值以多维数据的形式表示，可以从不同的维度观察数据，从而对数据进行更深入的观察和分析。数据可视化技术包含数据空间、数据开发和数据分析三个基本概念。其中，数据空间是由n维属性和m个元素组成的数据集构成的多维信息空间；数据开发是指利用一定的算法和工具对数据进行定量的推演和计算；数据分析是指对多维数据进行切片、块、旋转等动作剖析数据，从而能多角度、多侧面观察数据。

大数据可视化的一个重要目标是将大数据中包含的信息清晰、有效地传递给用户并进行沟通。相对于传统的数据可视化技术，大数据可视化技术需要处理更多类型、更大体量的数据，并能够快速地收集、筛选、分析、归纳、展现决策者所需要的信息，同时支持用户与可视化平台的交互分析及对新增数据的实时更新。

6.2 数据可视化的发展趋势

随着人们对科学技术的要求越来越高，数据可视化技术已经成为当前迅速发展的新兴热门领域。从目前科技的发展趋势不难看出，未来就是数据的世界，一切皆数据。如何才能把纷繁复杂的大数据集、晦涩难懂的数据报告变得轻松易读、易于理解，可视化无疑是最佳选择，它拉近了那些人们原本看起来遥不可及的距离。如今，被开发的可视化软件和工具越来越多，每种工具都具备各自不同的特点，人们可以根据个人或项目的需求轻松地选择适合的工具。例如，人们在制作图表时可以选用Excel、i Charts、Raw、Fusion Charts Suit XT等，创建交互式地图时可以选用Modest Maps、Leaflet等，BI分析时可以使用BO、BIEE、Yonghong Z-Suite等。

目前，数据可视化的关键技术主要有以下几种。

数据信息的符号表达技术

这种技术可以用来表达数据信息的符号有多种，如常规的文字符号、几何图形符号、各类坐标、图像阵列和图像动画等。通常，将多种符号综合使用可以使用户获得不一样的沟通体验。各种类型的符号对数据信息的表达技术形式包括各类报表、地图、仪表盘、谱图等。

数据渲染技术

渲染是把几何图元描绘成图形或图像，是绘制真实感图形的主要技术。数据渲染技术包括各类符号到屏幕图形阵列的2D平面渲染技术、3D立体渲染技术等。

数据交互技术

交互技术不仅包括各类PC设备和移动终端上的鼠标、键盘与显示屏的交互形式，还包括音频、视频、指纹等技术。

数据表达模型技术

模型的建立就是把数据映射成物体的几何图元。数据可视化表达模型描述的是数据展示给用户所需要的语言文字和图形图像等符号信息，以及符号表达的逻辑信息和数据交互方式信息等。其中，数据矢量从多维信息空间到视觉符号空间的映射与转换关系，是表达模型最重要的内容。

尽管大数据可视化技术日新月异，但当前大多数数据可视化工具在交互性、实时性等方面表现较差，并且能够处理的数据来源单一，降低了数据可视化在企业数据挖掘中的作用。因此，下面这些问题也将会是今后大数据可视化研究和发展的重点。

交互式数据可视化

所谓交互式数据可视化，是指使用更多的图形化工具，通过交互式的图形实现分析者与数据的双向交互，从而摆脱对传统统计分析工具的依赖，降低其使用门槛，并能更好地洞察数据背后的重要信息。

进行可视化的数据集通常很大，而不同的用户对业务的关注点不同，让用户在整个数据集上找到自己需要的信息有些不切实际。因此，如果需要查询数据子集来获取有价值的信息，在交互式数据可视化工具中仅关注自己感兴趣的内容，将会更高效地发现更多、更有价值的业务规律。因此，相对于静态数据可视化，交互式数据可视化具有无可比拟的优势。

为了向用户更好地展示丰富的数据分析结果，不同来源、不同结构的数据需要整合起来进行整体分析和展示。近年来，随着各行各业信息系统的不断建设与使用，行业积累了越来越多的多源异构的历史数据，要将这些数据以可交互的方式展现给用户，需要解决以下几个关键问题。

第一，要为展示的数据进行有效的节点或者区间划分，使用户可操作的每个节点或者区间中的数据子集都是完整、有意义的。而且，用户在以不同粒度进行划分的节点或者区间上都可以进行操作。为了能够快速提取数据，以便于快速生成用户查询的展示数据，系统可以将具有完整意义的、不同的数据子集分批、分区地进行存储。

第二，用户对特定的节点或者区间进行交互式查询时，需要可视化系统及时响应。在一些应用场景下，用户查询的数据结果无法提前预知和生成，就要求可视化系统实时地进行数据生成和数据展示，这可以借助一些实时的并行计算框架来完成。

第三，系统也需要关注数据的相关性。也就是说，将两种数据的分析结果简单地整合在一起进行展示，可能不会起到正向作用。因为这两种数据可能没有相关性或者相关性很弱，将它们作为整体展示给用户会误导用户对业务规律产生错误的理解。因此，判断不同类型展示数据之间的相关性是十分必要的。即使是面对两种相关的数据，也需要对它们进行一些维度、展示形式上的变换，从而将它们更好地融合在一起。

实时数据可视化

现阶段数据可视化的实时性并不理想，一些现有的可视化工具只能满足企业分批数据的实时可视化需求，而无法实现全部数据的可视化。因此，为了利用更加全面的数据，帮助企业及时地发现业务规律并作出商业决策，研究并提出全量、实时的数据可视化技术势在必行。

对现有数据进行实时的可视化往往需要四个步骤：数据收集、数据分析和计算、数据存储以及数据的可视化。大部分情况下，要收集的信息是存储在文件里面的，因而首先需要从文件中读取数据。收集后的数据需要存储，如写入Hadoop中为离线计算作准备，然后利用Hadoop的Map Reduce进一步分析数据。在实时环境中，系统需要对收集的数据进行实时计算，即计算并生成展示数据，可以使用Storm等数据流实时计算框架，利用并行可视化算法将一个数据展示问题分解为多个可同时运行的独立子任务。数据存储是指对实时计算结果的存储，可以使用Redis等基于内存的数据库以及Mongo DB等持久化存储工具，并且需要将这些实时生成的展示数据存入索引。最后在数据的可视化阶段，前端展示工具从基于内存的数据库以及高效的分布式索引中提取数据，渲染生成最终的图表展示给用户。

6.3 数据可视化应用与设计

目前，数据可视化技术已经应用于很多领域，用户只需简单操作就能够轻松地利用数据可视化平台对大量繁杂无序的数据进行可视化分析，并作出相应决策。下面介绍几个数据可视化技术在典型应用领域的成功案例。

医学

医学领域的可视化应用已经非常普遍，并且相对成熟，主要应用于医学诊断、外科手术规划以及辐射治疗等方面。如人们熟知的CT（电子计算断层扫描）技术，它通过用射线对人体某部位进行断层扫描并结合计算机图像处理相关技术产生所需的诊断图像。另外，还有MRI（磁共振成像）、SPECT（单光子发射计算机断层成像）、PET（正电子发射计算机断层扫描）等技术，这些技术都能提供人体相关部位的医学图像。

可视化技术再将已有的诊断图像进行融合，重构出三维图像，帮助医生准确定位病变体的大小、形态以及空间位置等属性，同时显示出病变体与周围内部生物组织的关系，为后续的治疗方案提供可靠的决策。例如，在脑瘤的开颅手术中，医生可以基于重构出的人脑内部结构，在术前多次模拟开颅的位置，并通过实验分析选择最佳的切除方案。在手术的过程中，医生还可以通过屏幕监视手术的过程，从而大幅度提升手术的成功率。

气象预报

气象预报不仅关系到人们每天的生活，而且对国民经济的持续发展和国家安全也有很大的影响。例如，灾害天气的预报能在很大程度上降低人民的生命和财产损失。气象预报需要气象工作者在短时间内对海量的气象数据进行处理，并通过分析获取有价值的信息进行预报。如此巨大的工作量对于气象预报的准确率无疑是一种考验。而可视化的加入可以将原本复杂、抽象的气象数据转化为直观的二维和三维图像，极大程度地提升了气象工作者的工作效率，使预报者能对未来的天气作出准确的分析和预测。例如，三维雷达系统目前已经广泛应用于短时临近预报、山洪和地质灾害预警预报、人工防雹增雨作业指挥、飞机增雨决策指挥等领域。借助三维雷达回波显示系统，气象工作人员可以直观识别天气系统中的冰雹云、单体、超级单体、飑线、锋面等强对流天气系统。三维雷达分析系统叠加显示自动站站点实况、站点雨量、面雨量、闪电密度、危险报等实时信息，是气象台短时临近业务人员开展短时临近天气预报和灾害性天气服务的有力工具。

交通

地图是一种历史悠久的地理和交通信息的可视化产物，传统的地图按一定的比例运用符号、线条、颜色、文字标注等描述各种区域的空间分布。随着可视化技术的不断发展，现代地图以电子方式融入了我们的生活。它能够模拟世界的真实样子，人们可以通过对地图进行随意的缩放来观看大至整个地球、小到局部全景的情况。

可视化技术在交通实时路况查询中起到了不可小觑的作用。例如，百度地图的实时路况查询图通过红、黄、绿三种不同的颜色来反映路段三种不同的通行状态，可以为市民的出行提供决策依据。

同时，可视化技术在人们的出行导航中也体现了极大的价值。用户在使用导航的过程中，当遇到多岔路口且无法根据语音提示选择正确的方向时，导航的可视化功能就能够很人性化地将问题解决。

工业

工业领域的数据可视化技术已经相对成熟，为工业制造和生产提供了便利。工业设计中最通用的语言为图纸，但是图纸中各种抽象的符号却无情地将对其感兴趣的外行人士拒之门外。数据可视化技术的出现将这扇密闭紧锁的大门打开，它通过建模、渲染等技术把抽象的符号、数据等用三维的图像清晰地呈现。

一些大型的工程技术研究会利用数据可视化进行虚拟仿真实验。例如，测试飞机、汽车等交通工具的性能时，需要在不同的气压、液压环境下进行检测，如采用真实的汽车或飞机等模型在水中或者空气中进行实验，会耗费巨大的时间、人力、财力等资源。而借助可视化，使用计算机技术进行模拟仿真实验，不仅能节省大量资源，也方便工程师对相关结果进行分析。例如，由于大型工业生产流程很难一窥全貌，采用工业仿真技术，可将炼钢、汽车制造、制药等产业的生产流程浓缩于屏幕上，以多角度画面模拟生产流程的各个环节，并提示相关信息。这种生产流程的模拟被广泛地应用于科普教育、新员工培训以及安全指导等方面，是工业生产管理教学的有力工具。

第7章

数据挖掘技术

7.1 什么是数据挖掘

数据挖掘（Data Mining）一般是指从大量数据中自动搜索隐藏在其中的有着特殊关系的信息的过程。数据挖掘有两种不同的定义：（1）一门从大量数据或者数据库中提取有用信息的科学；（2）从大量的、不完全的、有噪声的、模糊的、随机的数据中，提取隐含在其中的、人们事先不知道但又是潜在有用的信息和知识的过程。数据挖掘通常与计算机科学有关，并通过统计、在线分析处理、情报检索、机器学习、专家系统和模式识别等诸多方法来实现提取信息和知识的目标。

数据挖掘通常也被视为数据库知识发现（Knowledge-Discovery in Databases，KDD）中的一个步骤，如图7-1所示。KDD是从数据中辨别有效的、新颖的、潜在有用的、最终可理解的模式的过程，而数据挖掘是KDD通过特定算法在可接受的计算效率限制内生成特定模式的一个步骤。事实上，在现今的文献中，这两个术语经常不加区分地使用。

图7-1 KDD流程

随着云计算、物联网等技术的发展，每天都会有大量来自商业、社会、科学和工程、医学以及我们日常生活的方方面面的数据注入计算机网络上的各种数据存储设备。可用数据的爆炸式增长是我们的社会计算机化和功能强大的数据收集与存储工具快速发展的结果，也使我们的时代成为真正的数据时代，亟需功能强大和通用的工具，以便从这些海量数据中发现有价值的信息，把这些数据转化成有组织的知识。这些需求导致了数据挖掘的诞生。

数据挖掘可以把大型数据集转化为知识。例如，谷歌的流感趋势分析（Flu Trends）使用特殊的搜索项作为流感活动的指示器，通过分析大量的搜索数据发现搜索流感信息的人数与实际具有流感症状的人数之间的关系，当与流感相关的所有搜索聚集在一起时，一个流感评估模式就出现了。因此，使用聚集的搜索数据，谷歌的流感趋势分析可以比传统的系统早两周对流感活动作出评估。

7.2 数据挖掘的流程

数据挖掘通常包括信息收集、数据预处理、数据挖掘实施过程、结果分析展示等步骤。

（1）信息收集：首先，清晰地定义业务问题，明确数据挖掘任务的具体要求，根据确定的数据分析对象抽象出在数据分析中需要的特征信息；然后，选择合适的信息收集方法，将收集到的信息存入数据库。对于海量数据，至关重要的是选择一个合适的数据存储和管理的数据仓库。

（2）数据预处理：一般包括数据清理、数据集成、数据变换和数据规约四个处理步骤。数据清理就是检查数据的一致性，处理无效值和缺失值等。数据集成即将完整、正确、一致的数据信息存入数据仓库中。数据变换是通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。对于有些实数型数据，通过概念分层和数据的离散化来转换数据也是重要的一步。数据规约技术可以用来得到数据集的规约表示，规约后的数据集比原始数据集小得多，但仍然能够保持原数据的完整性。而且，规约后执行数据挖掘结果与规约前执行结果相同或几乎相同。

（3）数据挖掘实施过程：根据数据仓库中的数据信息选择合适的分析工具，应用统计方法、事例推理、决策树、规则推理、模糊集，甚至神经网络、遗传算法的方法处理信息，得出有用的分析信息。

（4）结果分析展示：将数据挖掘得到的信息以可视化的方式呈现给用户，或作为新的知识存放在知识库中供其他应用程序使用。

7.3 数据挖掘典型算法

2006年12月，权威的学术组织IEEE数据挖掘国际会议（International Conference on Data Mining ，ICDM）评选出了数据挖掘领域的十大经典算法，分别说明如下。

C4.5

C4.5算法是一种分类决策树算法，它的目标是通过学习找到一个属性值到类别的映射关系，这个映射能对新的类别未知的实体进行分类。算法从根节点开始不断地分治、递归、生长，直至得到最后的结果。根节点代表整个训练样本集。通过在每个节点对某个属性的测试验证，算法递归地将数据集分成更小的数据集。某一节点对应的子树对应着原数据集中满足某一属性测试的部分数据集。这个递归过程一直进行下去，直到某一节点对应的子树对应的数据集都属于同一个类为止。例如，图7-2描述的就是C4.5算法描述的天气情况与是否去打高尔夫球之间的决策关系。

图7-2 C4.5算法应用

C4.5算法可以产生直观的决策规则，准确率较高，可以处理非线性特征；但缺点是在构造树的过程中需要对数据集进行多次的顺序扫描和排序，因而导致算法低效。C4.5算法主要应用于临床决策、生产制造、文档分析、生物信息学、空间数据建模等。

K-Means

K-Means是一个聚类算法，就是把N个点（可以是样本的一次观察或一个实例）划分到K个聚类中，使每个点都属于离它最近的均值（聚类中心）对应的聚类，以其作为聚类的标准。K-means基于误差平方和准则，随机选择K个对象，每个对象代表一个簇的初始均值。对于每个对象，根据其与各个簇的均值的距离，将它指派到最相似的簇（距离最小），然后计算每个簇新的均值。此过程不断重复，直至准则函数收敛。它与处理混合正态分布的最大期望算法很相似，因为它们都试图找到数据中自然聚类的中心。它假设对象属性来自空间向量，并且目标是使各个群组内部的均方误差总和最小。

即使是在巨大的数据集上，K-Means聚类也非常容易部署实施。因此，它在很多领域都得到成功的应用，如市场划分、机器视觉、地质统计学、天文学和农业等，也可用于互联网领域的用户特征分析、电商行业客户画像等。

支持向量机

支持向量机（Support Vector Machine，SVM）是一种监督式学习方法，广泛应用于统计分类以及回归分析中。它将向量映射到一个更高维的空间里，在这个空间里建立一个最大间隔超平面，在分开数据的超平面两边有两个互相平行的超平面，如图7-3所示。分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大，分类器的总误差就越小。支持向量机的支持向量指的就是与分类边界距离最近的训练资料点。从支持向量机的最佳化问题可以推导出一个重要性质：支持向量机的分类边界可由支持向量决定，而与其他资料点无关。这也是它们被称为“支持向量”的原因。

图7-3 支持向量机的最大间隔超平面C

支持向量机的分类效果比较好，可以有效地处理高维空间数据和变量个数大于样本个数的数据。因为只利用一部分数据子集来训练模型，所以支持向量机模型不需要太大的内存。它的缺点在于因为需要较长的训练时间而无法很好地处理大规模数据集，同时也无法处理包含太多噪声的数据集。

支持向量机可用于文本和超文本的分类，在归纳和直推方法中都可以显著减少所需要的有类标的样本数；在进行图像分类时，支持向量机能够取得比传统的查询优化方案更高的搜索准确度；利用支持向量机进行医学中的蛋白质分类，超过90%的化合物能够被正确分类；也可用于手写字体识别等。

Apriori

Apriori是关联式规则中的经典算法之一。在关联式规则中，一般对于给定的项目集合（例如，零售交易集合，每个集合列出的单个商品的购买信息），算法通常尝试在项目集合中找出至少有C个相同的子集。算法采用自下向上的处理方法，即频繁子集每次只扩展一个对象，该步骤被称为候选集产生，并且候选集由数据进行检验。当不再产生符合条件的扩展对象时，算法终止。

在Apriori算法中，寻找最大项目集需要对数据集进行多步处理。第一步，简单统计所有含一个元素项目集出现的频率，找出那些不小于最小支持度的项目集，即一维最大项目集。从第二步开始循环处理直到再也没有最大项目集生成。循环过程是：第K步中，根据第K-1步生成的K-1维最大项目集产生K维候选项目集，然后对数据库进行搜索，得到候选项目集的项集支持度，与最小支持度比较，从而找到K维最大项目集。如果一个事务中含有X，则该事务中很可能含有Y。具体形式为{X}→{Y}，即通常可以描述为：当一个事务中顾客购买了一样东西{钢笔}（这里X=“钢笔”），则很可能他同时还购买了{墨水}（这里Y=“墨水”），这就是关联规则。所有支持度大于最小支持度的项集称为频繁项集，简称频集。

Apriori算法的优点是简单、易理解、数据要求低。其缺点则包括：在每一步产生候选项目集时循环产生的组合过多，没有排除不应该参与组合的元素；每次计算项集的支持度时都对数据库中的全部记录进行一遍扫描并比较，大大增加了计算机系统的I/O开销，而这种代价会随着数据库记录的增加呈现出几何级数的增加。

Apriori算法已被广泛应用于商业购物模式挖掘、好友推荐、网络安全等各个领域。典型的案例就是购物篮分析，通过使用算法发现顾客放入他们购物篮中商品之间的关联，分析顾客的购物习惯，让商家了解哪些商品频繁地被顾客同时购买，从而帮助他们制定更好的营销策略。例如，著名的啤酒与尿布的案例就是一次成功的实践。

最大期望算法

在统计计算中，最大期望算法（Expectation Maximization Algorithm，EM）是在概率模型中寻找参数最大似然估计或者最大后验估计的算法，其中概率模型依赖于无法观测的隐藏变量。最大期望算法经过两个步骤交替进行计算：第一步是计算期望E，利用对隐藏变量的现有估计值计算其最大似然估计值；第二步是最大化M，在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中，这个过程不断交替进行。

最大期望算法的优点是简单稳定；缺点是迭代速度慢、次数多，容易陷入局部最优。最大期望算法经常用在机器学习的参数估计和计算机视觉的数据聚类领域。

Page Rank

Page Rank里的Page不是指网页，而是指谷歌创始人之一拉里·佩奇（Larry Page），即这个等级方法是以佩奇来命名的。

Page Rank通过网络的超链接关系来确定一个页面的等级。谷歌把从A页面到B页面的链接解释为A页面给B页面投票，根据投票来源（甚至来源的来源，即链接到A页面的页面）和投票目标的等级来决定新的等级。简单地说，一个高等级的页面可以使其他低等级页面的等级提升。

Page Rank根据网站外部链接和内部链接的数量和质量来衡量网站的价值。每个到页面的链接都是对该页面的一次投票，被链接得越多，就意味着被其他网站投票越多。这就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和某个网站挂钩。Page Rank这个概念引自学术中一篇论文被引述的频度，即被别人引述的次数越多，一般判断这篇论文的权威性就越高。

Page Rank的优点是完全独立于查询，只依赖于网页链接结构，可以离线计算；缺点是忽略了网页搜索的时效性，旧网页排序很高，存在时间长，积累了大量的in-links，拥有最新资讯的新网页排名却很低，因为它们几乎没有in-links。

Page Rank不仅可以用于网页排序，也可用于其他领域的影响力研究等。例如，内布拉斯加州（Nebraska）大学的一位文学教授开发了一款软件，使用Page Rank和其他算法对19世纪的文学作家及其作品进行研究，通过分析近3600部长篇小说得出了结论：简·奥斯丁和沃尔特·司各特是那个时代最有影响力的作家。

自适应增强算法

自适应增强算法（Adaptive Boosting，Ada Boost）是一种机器学习方法：前一个分类器分错的样本会被用来训练下一个分类器。相对于大多数其他学习算法而言，Ada Boost算法对噪声数据和异常数据很敏感，不容易出现过拟合现象。它使用的分类器可能很弱（如出现很大错误率），但只要它的分类效果比随机好一点（如两类问题分类错误率略小于0.5），就能够改善最终得到的模型。Ada Boost算法是一种迭代算法，在每一轮中加入一个新的弱分类器，直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重，表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类，那么它在构造下一个训练集中被选中的概率就被降低；相反，如果某个样本点没有被准确地分类，那么它的权重就得到提高。通过这样的方式，Ada Boost算法能“聚焦于”那些较难分类（更富信息）的样本上。

Adaboost算法的优点在于精度高、简单、无需做特征筛选，不会过度拟合；缺点在于训练时间过长，执行效果依赖于弱分类器的选择。该算法目前广泛应用于人脸检测、目标识别等领域。

K最近邻分类算法

K最近邻分类算法（K-Nearest Neighbor Classification，KNN）是最简单的机器学习算法之一。其基本思想是：如果一个样本在特征空间中的K个最相似（即特征空间中最邻近）样本中的大多数属于某一个类别，则该样本也属于这个类别。以电子商务系统为例，该系统在做商品推荐时会根据和用户具有相似特征的人群的购买记录来推荐，理由就是相似的人群想要购买的东西也可能相似。那么，如何定义具有相似特征的人呢？这些特征可能是性别、年龄、地域、浏览记录、购买记录、收藏记录等各种数据。对于这些不同类别的数据，无论是分类数据，还是数值型数据，通过利用合适的方法，如最常见的欧氏距离、曼哈顿距离等，来度量两个样本点之间的距离，从而得到哪些人是相似的人。那么，一类人喜欢的东西，系统经过排序会将结果展现给和他们相似的人。

一个经典的案例如图7-4所示。图中有两个类型的样本数据，一类是正方形，另一类是三角形，而圆形是待分类的数据。如果K=3，那么离圆形最近的有2个三角形和1个正方形，这3个点投票，于是圆形这个待分类点属于三角形。如果K=5，那么离圆形最近的有2个三角形和3个正方形。这5个点投票，于是圆形这个待分类点属于正方形。

图7-4 KNN算法示例

KNN算法的优点在于简单，无需估计参数，无需训练，适用于多分类问题；缺点在于计算量较大，可解释性较差，无法给出决策树那样直观的规则。该算法目前广泛应用于客户流失预测、欺诈侦测等领域。

朴素贝叶斯算法

朴素贝叶斯（Naive Bayes）算法是一系列以假设特征之间强（朴素）独立下运用贝叶斯定理为基础的简单概率分类器。该分类器模型会给问题实例分配用特征值表示的类标签，类标签取自有限集合。它不是训练这种分类器的单一算法，而是一系列基于相同原理的算法：所有朴素贝叶斯分类器都假定样本的每个特征与其他特征都不相关。例如，如果一种水果具有红、圆、直径大概8厘米等特征，该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定，朴素贝叶斯分类器会认为这些属性在判定该水果是否为苹果的概率分布上是独立的。

朴素贝叶斯模型发源于古典数学理论，有着坚实的数学基础以及稳定的分类效率。其优点在于该模型所需估计的参数很少，对缺失数据不太敏感，算法也比较简单。理论上，与其他分类算法相比，朴素贝叶斯模型具有最小的误差率，但实际上并非总是如此。这是因为朴素贝叶斯模型假设属性之间相互独立，这个假设在实际应用中往往是不成立的，这给朴素贝叶斯模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时，朴素贝叶斯模型的分类效率比不上决策树模型。而在属性之间相关性较小时，朴素贝叶斯模型的性能表现良好。

朴素贝叶斯算法由于简单、快速、直接的优点，被广泛应用于分类领域，如垃圾邮件过滤、短信识别、文本分类、新闻分类、查询分类、商品分类等。

分类回归树算法

分类回归树（Classification and Regression Trees，CART）是决策树的一种，采用二分递归分割的技术，将当前的样本集分为两个子样本集，使生成的每个非叶子节点都有两个分支。根据不同的条件对数据进行切分，到达叶子节点时根据剩下的数据进行预测，输出一个常数。分类回归树算法有两个关键的思想：一是递归地划分自变量空间；二是用验证数据进行剪枝。

分类回归树算法的优点在于抽取规则简便且易于理解，面对存在缺失值、变量数多等问题时非常稳健；缺点是因为要求被选择的属性只能产生两个子节点，在类别过多时错误可能增加得较快。该算法目前主要应用于信息失真识别、电信业潜在客户识别、预测贷款风险等。

7.4 数据挖掘与大数据

大数据日益广泛地应用于政府、商业、科技、教育、医疗经济和社会等各个领域，大数据相关理论和技术的研究也如火如荼地开展，数据也从传统数据挖掘时代过渡到大数据时代。然而，大数据和数据挖掘并不是互相取代的关系，它们既有不同之处又相互关联。

数据挖掘和大数据都是以海量数据为基础，通过某种或几种工具或算法，从数据中挖掘出人们利用的知识发现和规律，供人们使用并为其提供服务。在挖掘知识表示及规律方面，它们用的方法大同小异。

狭义地讲，数据挖掘一般基于某个或几个数据库中的数据，数据规模相对较小，以MB为基本处理单位；数据类型单一，往往是一种或少数几种，而且以结构化数据为主；因为数据挖掘往往使用的是常规数据库，因此先有模式后有数据；数据仅作为处理对象。而大数据规模很大，以 GB、TB、PB为基本处理单位；数据种类繁多，这些数据中又包含着结构化、半结构化以及非结构化的数据，并且占据着越来越多的份额；很多情况下很难预先确定模式，模式只有在数据出现之后才能确定，而且模式随着数据量的增长处于不断演变之中；海量数据作为一种资源来辅助解决其他诸多领域的问题，同时由于其数据量太大往往需要考虑数据存储的问题。

数据挖掘一般应用一种工具或少数几种工具就可以处理发现的知识并加以应用。而大数据时代不可能仅通过一种工具就能解决问题，得到有用的结论。大数据的分析处理可以把海量数据划分成几块，利用数据挖掘技术进行挖掘，也可以将数据挖掘技术加以整合，研发出更高效、更准确的平台或算法对大数据直接进行挖掘。因此，数据挖掘在大数据时代的数据分析和挖掘过程中具有重要的意义。

第8章

大数据系统评价标准

8.1 大数据系统评价概述

8.1.1 信息时代的“云大物移”

当前，我们正处在信息时代，云计算、大数据、物联网和移动互联网等技术纷纷出现。如果把信息时代比作一首交响乐，那么“云大物移”就是用来演奏交响乐的不同乐器。不同乐器完美配合，才能共同奏出一首美好、动听的交响乐。“悲伤时，大提琴唱主角；开心时，小提琴演奏忙……”它们各司其职，各负其责。

互联网包括PC互联网和移动互联网，这就好比人的主神经系统。PC互联网实现了PC之间的互联，提升了人们的信息交互能力；移动互联网实现了人们随时随地信息交互的能力。

物联网就像是人的神经末梢（微神经系统），它是对主神经系统有益和必要的补充，实现了传感设备之间以及传感设备与互联网之间的互联互通，提升了人们对客观世界的感知能力。

云计算就像是人的大脑，且侧重于大脑的物理特性，是大脑思考的物质前提，它提升了人们对数据的计算处理能力。

大数据也可以被比喻成人的大脑，但侧重于大脑的思维特性，是大脑思考的最终目的，提升人们对数据的价值提取能力。

其中大数据技术最值得关注，因为大数据是数据社会的主要矛盾所在。传统IT技术的主要要素是网络、计算、存储、基础构架、操作系统和系统软件，其价值主要体现在业务处理效率的提升上，“业务数据化”是其主要手段。而智能化是信息时代的主要特征，“数据业务化”是其主要表现，它将通过大数据分析颠覆传统的业务逻辑。数据的利用方式也将从过去的“支撑业务”到现在的“推动业务”，再到将来的“引领业务”。

人和人之间的最大差距是思想的差距。在信息时代，数据积累能力和数据的价值提取能力将成为国家、政府和企业核心竞争力的重要组成部分。那么，不同国家、不同政府、不同企业的差距，也将体现在国家、政府、企业对大数据不同的应用程度上。因此，即使在现有物质条件不发生变化的前提下，重视大数据技术也会使一个主体脱胎换骨，重获新生！这就好比是《道德经》中所说的通过“修心”来“得道”，重视大数据是在“修心”，而其他技术则是在“修身”。

同时，我们应该意识到，信息时代就像一个胎儿在母亲身体里发育一样，其主神经系统（互联网）、神经末梢（物联网）、人的大脑（云计算）和思考活动（大数据）这几个方面都不可或缺。但在细胞分裂的不同阶段，胎儿都有其主要的发育重点。因此，对待信息时代的各种技术不可厚此薄彼，要全面发展。

8.1.2 大数据项目失败的常见原因

随着企业信息化的不断深入，大数据技术作为挖掘数据价值和提升决策水平的重要手段，正受到越来越多企业的关注。已经有不少企业启动了大数据项目研究和建设工作，并希望借此为企业重要决策提供必要的数据支持。但目前看来，大数据项目的成功率不高，主要有以下几方面原因。

（1）认识不到位。尽管数据中包含大量重要信息，但有调查表明，超过62%的企业领导者仍然倾向于相信自己的直觉，更有61%的受访者认为领导者的实际洞察力在决策过程中拥有高于数据分析结论的优先参考价值。

（2）相关人才缺乏。企业中既懂业务又懂大数据分析的人才相对缺乏，造成大数据项目开始时需求不够明确。因为通常负责此类项目的都是IT技术人员，而他们往往因为对业务不够精通而导致无法向数据模型和系统提出足以指导决策的正确问题。

（3）数据质量不高。数据质量问题也是造成大数据项目走向失败的重要原因之一。企业要想充分发挥大数据所赋予的机遇和优势，前提是必须拥有可靠、准确、及时的高质量数据。只有从高质量的大规模数据中提取隐含的、有用的信息，企业才能作出更加精准、更加符合市场和客户需求的决策。

（4）技术路线错误。大数据项目建设有两种常见错误：一种是希望构建一套过分激进、自己根本无法驾驭的大数据项目；另一种是尝试利用传统数据技术处理大数据问题。无论是哪种情况，都很可能使项目陷入困境。

（5）其他情况。跨部门、跨业务系统访问数据的能力以及人的因素同样重要。另外，大数据项目实施周期通常比较长，不容易在短时间内看到突出成果。即使有个别成功的案例，人们也有可能会认为这只是“碰巧”而已，而不会将成功的主要原因归功于大数据系统。

那么，如何客观地评价一个大数据系统呢？

8.2 评价指标选取原则

通常可以从三个不同的方面对大数据系统进行评价：功能评价、性能评价和应用效果评价。功能评价主要针对软件供应商，在大数据系统建设阶段进行评估；性能评价是在软件功能同质化的情况下进行的技术评价，特别是当技术性能非常接近时，使用者很难直观体会；应用效果评价从实施大数据系统是否提高了业务综合能力、提升了运维效率等应用角度开展评价，可以较好地平衡功能供应商与使用者之间的矛盾，更深入评估信息系统的实际应用情况。在本书中，我们将着重描述技术评价，即功能评价和性能评价。

对大数据系统的技术评价主要从以下几个方面进行。

（1）数据质量的管理水平。高水平的大数据分析离不开高质量的基础数据。

（2）非结构化数据的处理能力。非结构化数据给传统数据分析带来了新的挑战，针对非结构化数据需要特定的方法去分析、提炼和挖掘。

（3）大数据挖掘算法的有效性。大数据分析的核心是大数据挖掘算法，挖掘算法基于海量数据发现隐藏在数据背后业务规律的能力，直接决定了大数据系统本身的有效性。

（4）大数据挖掘算法的高效性。针对海量数据，通过分布式、并行化的技术手段高效处理数据的能力尤为重要。

（5）可视化展示能力。大数据可视化技术能够直观地展现大数据的分析过程和分析结果，便于用户理解和接受。

选择合适的评价指标并使其量化是大数据系统评价的关键所在，评价标准分为定性指标和定量指标。理论上讲，为了能够客观地反映软件质量特征，应该尽量选择定量指标。但对于大多数系统尤其是大数据系统来说，并不是所有质量特征都可以用定量指标进行描述，不可避免地要采用一些定性指标来模糊地刻画大数据系统的部分特征。同时，在评价指标的选取上应该把握以下原则。

（1）针对性：不同于其他一般的软件系统，大数据系统需要能够反映数据的特征，包括数据获取、数据处理、数据存储、数据分析、数据展示的功能完备性与运行可靠性。

（2）可测性：采用的评价指标宜定量表示，可以通过数学计算、平台测试、经验统计等方法得到具体数据。

（3）简明性：即选择的指标易于被各方理解和接受。

（4）完备性：即选择的指标应覆盖分析目标所涉及的范围。

应该注意的是，选择的评价指标并不是越多越好，而主要在于指标在评价中所起作用的大小。假如评价时使用的指标太多，可能增加评价结果的复杂性，有时甚至会影响评价的客观性。评价指标的确定一般采用自上向下的方法逐层分解，并且需要在评价过程中进行动态的综合平衡。

针对不同类型的大数据软件，评价准则的侧重点也有所不同。例如，从大数据的价值链条来看，大数据机构可以分成三类：

（1）大数据源类：手握大数据，但是没有利用好，典型的机构有政府机构、电信行业、电力行业等；

（2）大数据技术类：本身没有数据，但是知道如何帮助有数据的人利用数据，IT咨询和服务企业如埃森哲、IBM、甲骨文等都属于这一类；

（3）大数据应用类：既有业务又有数据，还有大数据思维，比较典型的企业包括谷歌、亚马逊、阿里巴巴、腾讯等。

对这三类大数据机构进行大数据项目的分析评价标准当然也不尽相同。此外，企业的数据分析需求层次是与其自身经济实力、科技实力以及文化实力直接相关的。位于产业链低端的企业，其数据汇聚需求和信息化需求在整个系统需求中占比较大。而位于产业链高端的企业，尤其是知识密集型企业，其数据分析需求会占较大的比重。企业应用大数据的目标不同，所需要大数据系统的评价标准也会有所差异。

8.3 大数据系统评价标准

大数据系统作为大型数据管理和处理软件，其质量评价标准与通用软件质量评价类似，但又有其特殊性。归纳下来，大数据系统质量评价要素通常包括6个通用要素和5个专有要素。

8.3.1 通用评价要素

（1）功能性指标：功能性是软件最重要的质量特征之一，通俗地讲，即用户要求的功能是否全部实现了。

（2）效率指标：在给定的条件下，用不同的数据处理软件实现某种功能所需计算机资源（包括时间）的程度。效率反映了在完成功能要求时有没有浪费资源。这里所说的“资源”包括内存和外存的使用、通道能力及处理时间。

（3）可靠性指标：在规定的时间和条件下，大数据系统所能维持其性能水平的程度。可靠性除了反映系统满足用户需求正常运行的程度，还反映了在故障发生时能继续运行的程度。

（4）易用性指标：使用一个大数据系统，用户在学习、操作、准备输入和理解输出时所做出努力的程度。易使用性反映了与用户界面的友善性。

（5）灵活性指标：软件的灵活性就是软件的应变能力。在一个大数据系统中，为了满足用户需求或环境改变发生时进行相应修改所做努力的程度。如果用户提出功能修改要求，软件开发者需要花很大力气、很长时间才能完成，而且一改动就涉及软件全身，改一下某个功能的小毛病却引起了其他功能不正常，那么这个软件就不是灵活的。

（6）系统可移植性指标：可移植性是指从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。

8.3.2 专有评价要素

（1）大数据质量指标：数据质量指标分成数据本身的质量指标和数据使用的质量指标两类。数据本身的质量指标主要有完整性、一致性、准确性和及时性。完整性是指数据信息是否存在缺失的状况；一致性是指数据是否遵从了一致的规范（包括业务规范），可细分为定义一致性和业务一致性；准确性是指数据记载的信息是否存在偏差或错误；及时性是指数据从发生到收集的时延。数据使用的质量指标通常有可得性、可用性等。可得性用来度量在需要时获取数据的难易程度；可用性是指对于展现信息的使用和理解的简易程度。

（2）大数据系统存储能力指标：即针对数据存储与数据管理的性能指标，如大数据系统硬盘容量、系统磁盘吞吐率、I/O性能等。

（3）大数据并行处理性能指标：大数据分析需要在短时间内完成大量数据的处理，这就需要分布式或并行数据处理技术。并行处理性能指标主要包括并行数据导入导出性能（条每秒）、数据并发处理速度、分布式数据查询速度等。

（4）大数据系统价值发现能力指标：数据是像石油、金矿一样的宝贵资产，其内在价值非常巨大。如何挖掘这些数据的价值，无疑是大数据系统的关键所在。大数据系统通过分析数据的变化规律和相关关系，应能发现隐藏在数据背后的事物间的内在联系和客观规律，并可以以此为依据进行决策。大数据分析大致可以分为三个阶段：第一阶段以离线分析为主，数据主要来自企业内部的结构化数据；第二阶段以近实时分析为主，数据类型逐步从结构化数据演进到还包括非结构化数据和半结构化数据；第三阶段则以实时分析为主，数据的来源和种类更加丰富，不仅限于企业内部的数据，同时会纳入来自第三方的竞争数据，并且以非结构化数据为主。这三个阶段的大数据系统价值发现能力也是逐步提升的。而且，大数据系统应能提供良好的架构和弹性，满足数据存储、数据分析和数据展示需求的扩展，使企业能够持续获益于大数据系统提供的决策依据。

（5）大数据系统展示能力指标：即与大数据分析过程及分析结果的可视化展示能力相关的指标。

8.4 大数据系统定位

客观地讲，大数据系统的优劣没有绝对的评价标准，好的大数据系统定位应与企业战略、企业架构和企业需求三个方面相匹配。

8.4.1 与企业战略相匹配

企业成功应用大数据技术不仅能显著改善企业的运行效能，而且能改变企业的管理方式、扩大业务范围、增强竞争优势、催生新业务；反之则会成为企业的包袱，使企业的运营更艰难。实践中企业大数据系统实施失败的案例也不少，很多企业对大数据系统的投入巨大，但收益不明显，甚至出现负的投资收益比。导致这种结果的最主要原因就是企业大数据系统战略和企业战略结合的紧密程度不够，它们之间缺乏适当的整合与匹配，大数据系统战略不能动态适应多变环境下企业战略的变化。客观地讲，大数据系统战略与企业战略之间存在作用与反作用的关系。这种关系表现为：一方面，企业战略对大数据系统战略具有约束力，大数据系统应该对企业的关键成功因素进行支持，帮助企业实现其战略目标；另一方面，大数据系统战略也可以反作用于企业战略，企业可以利用大数据系统的特点及优势调整企业的战略目标。它们之间只有形成相互协调、和谐一致的状态，才能形成合力，共同促进企业运营成功，这种状态就称为战略匹配。两者的匹配度是影响企业获取竞争优势的非常重要的因素。

8.4.2 与企业架构相匹配

企业架构可以分为两大部分，分别为业务架构和IT架构。业务架构是指把企业的业务战略转化为日常运作的渠道，业务战略决定业务架构，包括业务的运营模式、流程体系、组织结构、地域分布等内容。IT架构用来指导IT投资和设计决策的IT框架，是建立企业信息系统的综合蓝图，包括数据架构、应用架构和技术架构三部分。企业架构是承接企业业务战略与IT战略之间的桥梁与标准接口，是企业信息化规划的核心，可以帮助企业执行业务战略规划及IT战略规划。

我国大多数企业在进行IT投资时往往会跳过企业架构这个环节而直接进入IT项目的建设，这样就会导致重复投资、信息孤岛等现象。缺少规划就会发现很多开发的功能重复，也有的功能开发完成后被打入冷宫。大数据系统建设期间，只有充分考虑与业务架构和IT架构的匹配，才能使企业架构与大数据系统相得益彰。

8.4.3 与企业需求相匹配

虽然大数据现在炙手可热，大数据分析越来越火爆，很多企业都在试图拥抱大数据技术，但还是应该具体问题具体分析，因为大数据分析系统并非适合所有的企业。此外，与传统的数据分析相比，大数据在数据体量和数据类型上有了很大的增长，而且在数据分析侧重点上也有着本质的不同，已经从量变走向了质变。从传统的数据分析到数据挖掘是量的积累，但从数据挖掘到大数据就已经是质的飞跃了。

纵观历史，我们发现数据处理算法的发展经历了四个阶段，依次为基于小数据的简单算法、基于小数据的复杂算法、基于大数据的简单算法以及基于大数据的复杂算法。

基于小数据的简单算法出现在科学之初，各门自然科学的数据量都不大，计算也不是特别复杂，手工处理就能满足要求。其典型的案例是开普勒手工处理20年的天文数据并从中发现了开普勒定律。

随着人类对客观世界认识的深入，人类所面临问题的日益复杂化，科学家通常通过提升算法的复杂性来解决复杂问题，形成了基于小数据的复杂算法。

而为了适应复杂性算法，只有降低数据的复杂度。为此，统计学家创造了抽样方法。随着人类认识世界的深入，以往手工处理的方式在及时性、准确性和稳定性等方面的性能表现均远不能满足急剧增长的计算能力。计算机的发明大大提升了人类处理数据的能力，为人类进一步深入地认识世界打下了坚实的物质基础。到21世纪，人类已经积累了大量的数据，这些数据的差别巨大，传统的计算机硬件能力和软件架构都不能满足数据处理的及时性要求，只能用云计算、云存储、大数据等新技术才能解决。于是，基于大数据的简单算法出现了。

基于大数据的复杂算法是算法演化的最高级阶段。大数据是对小数据的一种否定，复杂是对简单的一种否定，但这是一种辩证的否定，是事物自己否定自己、自己发展自己，是既克服又保留，克服的是小数据算法中抽样样本等消极的内容，保留的是其事物中积极合理的因素。大数据时代，那些小数据时代所推崇的复杂、严谨、无懈可击的算法可能不会像以前那样受人待见。因为人类在实际应用中更注重的是算法的应用效果，而不是算法本身的高端档次。

数据处理算法的发展趋势表现出螺旋式上升、波浪式前进的演化道路，如图8-1所示。

图8-1 数据处理算法的演化曲线

与数据处理算法的演化经历了漫长的过程一样，企业的业务分析需求也同样需要长时间地逐步完善。假如企业的实际业务分析需求还达不到大数据分析的层次，如一些小规模的企业，假如现有的信息系统能满足业务需求，就不要盲目地追随潮流，舍弃旧的系统来搭建大数据系统。

8.5 大数据价值评估模型

常用的大数据价值评估模型通常有五种，分别为功能导向型模型、财务导向型模型、战略导向型模型、过程导向型模型和综合评价型模型。

（1）功能导向型模型提出的时间比较早，实施相对简单，主要适用于IT系统不太复杂的企业。

（2）财务导向型模型将信息系统的效率与财务收益全面挂钩，模型比较复杂，需要大量的财务数据支持，主要适用于那些IT系统有比较好的基础、企业有完善的财务管理系统和相关历史财务数据的大中型企业。

（3）战略导向型模型与企业的战略联系比较紧密，但缺乏有效的量化数据支持。

（4）过程导向型模型需要完善的历史数据支持，适用于规模比较大的企业，要求具备完善的财务管理系统。

（5）综合评价型模型评价角度比较全面，可以充分体现信息系统的全方位价值，但需要的数据比较多，实施周期比较长，部分指标量化比较困难。

信息化企业可综合考虑各模型的优缺点和适用范围，结合自身情况，从成本角度和价值角度（降低成本、增加收入、提高效率和躲避风险）综合考虑大数据系统的显性决策价值和隐性决策价值。

8.6 大数据质量评价

由于大数据具有关系复杂、类型多样、数据多变等特点，数据质量较难保证。我们将从数据流程、数据技术和数据管理三个视角来阐述大数据环境下保证大数据质量的重要性和挑战性。

8.6.1 数据流程视角

从数据的全生命周期角度来看，数据生产过程可以分为数据收集、数据存储和数据使用三个阶段。三个阶段分别对保证大数据质量提出了不同的挑战。

在数据收集阶段，大数据来源的复杂性决定了大数据类型的多样性。大数据的数据来源众多，数据结构随着数据来源的不同而各异。企业要想保证从多个数据源获取结构复杂的大量数据并有效地对数据进行整合，是一项异常艰巨的任务。因为来自大量不同数据源的数据之间存在冲突、不一致或相互矛盾的现象，在数据量较小的情形下通过编写简单的匹配程序，甚至是人工查找，即可实现多数据源中不一致数据的检测和定位。然而，这种方法在大数据情形下却显得力不从心。在数据获取阶段保证数据定义的一致性、元数据定义的统一性以及数据质量，是大数据提出的挑战。另外，由于大数据的变化速度较快，有些数据的有效期非常短，如果企业没有实时地收集并处理所需的数据，有可能收集到的就是过期、无效的数据，处理结果也会是无用的，并在一定程度上影响大数据的质量。数据收集阶段是整个数据生命周期的开始，这个阶段的数据质量对后续阶段的数据质量有直接的决定性影响。因此，企业应该重视源头上的大数据质量问题，为大数据的分析和应用提供高质量的数据基础。

在数据存储阶段，由于大数据的多样性，单一的数据结构（如关系型数据库中的二维表结构）已经远远不能满足大数据存储的需要，企业通常选用专门的数据库技术（如分布式数据库、内存数据库等）在常规的数据存储设备上进行大数据的存储，保证数据存储的有效性。据调查，目前国内大部分企业的业务运营数据仍以结构化数据为主，相应地主要采用传统的数据存储架构，如采用关系型数据库进行数据的存储。对于非结构化数据，企业常见的应对策略是将其转化为结构化数据后再进行存储、处理及分析。这种数据存储处理方式不仅无法应对大数据数量庞大、结构复杂、变化速度快等特点，而且一旦转化方式不当，将会直接影响数据的完整性、有效性与准确性等。视频、图片、音频等非结构化数据对传统数据存储架构的可靠性及有效性构成了挑战。数据存储是实现高水平数据质量的基本保障，如果数据不能被一致、完整、有效地存储，数据质量将无从谈起。因此，企业要想充分挖掘大数据的核心价值，首先必须完成从传统的结构化数据存储处理方式向同时兼具结构化与非结构化数据存储处理方式的转变，不断完善大数据环境下企业数据库的建设，为保证大数据质量提供基础保障。此外，数据存储和使用规则也应根据大数据结构的要求和特点合理地设计，以方便对数据的快速读取。如果数据存储不合理，不仅会浪费系统的存储空间，还会给后期的数据使用带来极大的不便，甚至产生错误，难以保证数据质量。

在数据使用阶段，数据价值的发挥在于对数据的有效分析和应用。大数据涉及的使用人员众多，很多时候是不断地同步对数据进行提取、分析、更新和使用，任何一个环节出现问题都将严重影响企业系统中的大数据质量，影响最终决策的准确性。举例来说，由于大数据规模庞大、价值贬值速度快，因此对数据的处理速度要求较高，如果数据处理不及时，有些变化速度快的数据就失去了其最有价值的阶段，有些过期的数据甚至与实际不符，企业根据这些过期的无效数据作出的决策必然也是无效的，甚至是错误的。从这个角度来讲，数据及时性也是大数据质量的一个重要方面，如果企业不能快速地进行数据分析，不能从数据中及时地提取出有用的信息，就将会丧失占领市场的先机。

8.6.2 数据技术视角

技术视角主要是指从数据库技术、数据质量检测识别技术、数据分析技术的角度来保证大数据质量的重要性和挑战性。

与人类社会的三次大分工类似，数据技术的发展也经历了数据社会中的三次大分工。

（1）数据库技术把数据从程序中分离出去，简化了应用程序的编制，提升了应用程序的适应性。

（2）数据仓库技术将数据分析从数据处理中分离出来，OLAP可根据要求快速、灵活地进行大量数据的复杂查询处理。

（3）大数据的出现将大数据分析技术与传统的数据分析技术分离开来，大数据是对数据全集的分析，同时更加关注数据的关联性分析和规律性的挖掘。

中小企业的业务数据记录通常有几十万或几百万条，在这种情况下检测数据库中错误、缺失、无效、延迟的数据比较容易，几分钟甚至几秒钟就能完成对所有记录的扫描和检测。然而，大数据时代企业的数据不仅量大，而且结构种类繁多，除了简单的结构化数据，更多则是复杂的非结构化数据。而且，数据之间的关系较复杂，如果要识别和检测大数据中错误、缺失、无效、延迟的数据，往往需要遍历数百万甚至数亿条记录，传统的技术和方法常常需要几小时、几天甚至几个星期的时间才能完成对所有数据的扫描与检测。因此，从这个角度讲，大数据环境为数据质量的监测和管理带来了巨大的挑战。传统的数据库技术、数据挖掘工具和数据清洗技术在处理速度和分析能力上已经无法应对大数据带来的挑战，处理小规模数据质量问题的检测工具已经不能胜任大数据环境下数据质量问题的检测和识别任务。这就要求企业应根据实际业务的需要，在配备高端数据存储设备的同时，开发、设计或引进先进的、智能化的、专业的大数据分析技术和方法，以实现大数据中数据质量问题的检测与识别，以及对大数据的整合、分析、可视化等操作，充分地提取、挖掘大数据潜在的应用价值。

鉴于目前诸多企业仍然采用的是传统的关系型数据库数据处理方式及适用于小规模数据的数据分析和数据挖掘技术，对大数据存储处理技术和分析工具仍处于学习和了解阶段。另外，能够满足大数据特点及要求的数据质量检测和清洗的智能化工具十分稀缺。这些都对保障大数据质量、充分发挥数据质量在推动大数据应用有效性方面的重要作用提出了挑战。

8.6.3 数据管理视角

管理视角主要是指从企业高层管理者、专业管理和技术分析人员的角度探讨保证大数据质量的重要性。

首先，大数据系统需要企业高层管理者的重视和支持。只有得到了企业高层管理者的高度重视，一系列与大数据有关的应用及发展规划才能有望得到推动，保证大数据质量的各项规章制度才能得到顺利贯彻和落实。如果企业高层管理者缺乏大数据意识以及对大数据价值的正确理解，企业对大数据管理、分析和应用的重视程度就会有所降低，大数据的质量就无法得到全面、有效的保证，从而将会大大弱化大数据价值的发挥，不利于企业竞争能力的提升。因此，企业应该在高层管理者的领导和支持下，加强大数据质量意识，建立完善的数据质量保证制度。然而，大数据在中国仍然处于“初级发展阶段”，远未达到系统化使用大数据技术对数据进行深度分析和挖掘的程度，还没有充分体会到大数据分析及应用给企业带来的巨大商业价值。因此，企业高层管理者对大数据的认识不足在一定程度上阻碍了大数据在国内企业的发展。

其次，专业数据管理人员的配备是保证大数据质量不可或缺的条件。由于大数据本身的复杂性增加了大数据管理的难度，既懂得数据分析技术又谙熟企业各项业务的新型管理人员是当下企业应用大数据方案最急需的人才。大数据环境下，新型管理人才要能够根据企业的业务需求选择合适的数据库以及数据抽取、转换和分析等工具，进行相关的数据挖掘、处理和分析，并根据分析结果对企业未来的业务规划和发展战略提出相应的意见和建议。

在数据量小、数据结构简单、数据来源少的情形下，数据管理相对简单，数据质量也相对容易保证。但是在数据量大、变化速度快、结构复杂、来源众多的大数据情形下，保证数据质量并非易事。再加上大部分企业对大数据及数据质量的重要性意识还较淡薄，大数据方案的建设及应用在我国尚不成熟，企业的数据存储分析技术、数据管理方案等各项配套设施和制度还不完善。因此，保证大数据的质量任重而道远。

8.7 大数据安全评价

大数据系统将各相关领域资源聚合共享，使其形成海量数据。这些数据潜在的价值吸引着众多黑客的攻击。因此，大数据的安全问题成为影响大数据应用的关键因素之一。

大数据存储安全

大数据是一种超大规模和高并发的非结构化数据，无法用传统的关系型数据库存储，因此往往被存储在非关系型的数据库中。然而，相对于较成熟的关系型数据库，非关系型数据库发展刚刚起步，其安全性还有待完善。一方面，验证和鉴权机制较薄弱，使数据库容易遭受暴力破解和来自内部的攻击，攻击者可能窃取或篡改数据，造成敏感数据被泄露。另一方面，非关系型数据库也易受到各类注入攻击，如JSON注入、REST注入、schema注入等，攻击者可以利用这些注入手段向数据库中添加垃圾数据。此外，大数据通常基于云端存储，而云存储本身存在安全威胁。云存储作为公共数据中心，对多客户连接、高交互性及数据安全保障都提出了更高的要求。

大数据处理安全

从技术角度看，Hadoop作为基础数据处理平台，因其简单易操作、低成本被企业迅速采用。Hadoop采用主/从架构，该架构管理起来比较简单，但存在致命的单点故障和空间容量不足等缺点，大大限制了Hadoop的可扩展性。因此，Hadoop处理ZB级海量数据的聚合存在着数据泄露风险，其自身也存在云计算的安全问题。作为大数据的另一项基本技术，No SQL以其易扩展、高性能、高可用、灵活的数据模型优势成为处理数据的新领域。但是，No SQL目前没有得到正式的官方支持，一旦出现差错将造成严重的损失。同时，No SQL并未形成统一标准，各种产品层出不穷，内部混乱，使企业很难保护机密信息。另外，No SQL在数据安全方面也存在一定的漏洞。No SQL自身安全机制尚不完善，而且在数据安全方面未设置严格的访问控制和隐私管理，各种项目的安全性还需时间来检验。

大数据传播安全

大量的数据在传播过程中会引发不同的安全问题。首先，数据的传输需要各种网络协议，而有些协议缺乏完善的数据安全保护机制；其次，数据采集过程中人工干预造成数据失真与偏差；再次，数据版本的变更也会造成对信息的错误判断。攻击者可能通过执行中间人攻击或者重放攻击等手段，在数据传输过程中破坏数据。如果数据在传播过程中遭到泄露、破坏或拦截，可能造成数据安全管理失控、谣言传播、隐私泄露等问题。客户与服务器之间的数据传输没有加解密处理，攻击者就可以在传输的过程中窃取数据。例如，配备GPS定位跟踪装置的移动电话可能泄露用户的位置信息。泄露的数据还往往会被多方利用。而用户无法知道自己的数据是在哪个环节被泄露以及是谁泄露的，从而加大了用户的担忧。

大数据挖掘安全

大数据的核心是数据挖掘技术。从数据中挖掘出信息，为企业所用，是大数据价值的体现。然而，使用数据挖掘技术为企业创造价值的同时，随之产生的就是隐私泄露的问题。数据挖掘技术使人们能够从大量数据中抽取有用的知识和规则，但这些知识和规则中可能包含一些敏感的隐私信息，数据分析人员往往可以利用数据挖掘算法找出非隐私信息和隐私信息之间的关联，从用户的非隐私信息推理出其隐私信息，从而造成用户隐私信息的泄露。虽然数据分析人员可以采用数据加密、数据匿名等方法在数据挖掘时保护隐私信息，但是一方面分析、处理大规模的加密数据变得困难，影响了数据挖掘的效率，另一方面仅通过匿名技术并不能很好地达到隐私保护目标，黑客还是有可能通过数据挖掘技术逆向识别出特定用户的隐私信息。

大数据的安全性评估指标

大数据安全的两个重要方面是数据的可信性和隐私保护。评估大数据的安全性也可从这两个方面入手，即数据的可信性和隐私保护程度。数据的可信性主要包括相关性、准确性、及时性、完整性、一致性、有效性等；数据的隐私保护程度主要可以从差异度、大数据安全评估指标差、信息熵、匿名化程度、数据泄露风险度等方面来计算。

第9章

大数据在生活中的应用

伴随科技的快速发展，我们经历了从个人计算机到互联网，再到智能手机普及、激发各种移动互联网的应用，继而迎来了大数据时代。大数据技术创新加速了很多应用创新，应用创新又反哺出更多大数据的增长。如今，从城市交通到空气质量，从建筑设计到影视制作，大数据分析应用已经逐渐渗入人们日常生活中的方方面面。从人们基本的食、住、行，到点缀生活的游、购，都因为大数据的出现而有了更人性化的体验。

9.1 食：食品安全

近年来，食品安全危机频繁发生，严重影响了人们的身体健康，引起了广泛的关注。食品安全不仅与国民的身体健康、生命安全息息相关，也涉及我国食品产业在国际上的声誉，食品安全与否极大地影响了当今社会的稳定和政府的形象。食品安全是一个复杂的问题，涉及生产、流通等食品链的各个环节。如何对食品有效跟踪和追溯，已成为一个极为迫切的全球性课题。采用人海战术、被动式执法等传统的食品安全监管方法，已经无法适应时代要求。大数据的出现为解决食品安全问题开辟了新途径，能够帮助我们从食品链的庞大数据中分析出有价值的信息，从而正确应对食品安全问题。

通过物联网技术，统一食品追溯编码，建立“食品安全追溯系统”，可以对食品的生产、仓储、分销、物流运输、市场巡检及消费者等信息，以及产品名称、执行标准、配料、生产工艺、标签标识等数据，进行采集、跟踪、分析。将各类海量数据聚合在一起，避免监管部门之间信息沟通不畅等问题，优化职能监管部门的资源配置，制定出较好的统筹与协调解决方案，避免出现地方保护、食品监管相互扯皮及推诿等不良现象。利用大数据分析技术，既可以帮助监管部门实现产品种养、生产、销售、流通、公众服务、物流等环节的全生命周期的监管，也可把这些信息通过互联网、终端查询机、电话、短信等途径实时呈现给消费者。消费者发现有食品质量问题时可通过手机等工具进行投诉，而这些投诉数据又可被“食品安全网络舆情监测系统”监测和分析，形成闭环数据循环，做到对食品从农田到餐桌的全过程监控。

案例：阿里巴巴大数据协助食品安全风险控制

阿里巴巴食品安全团队联合国家工商总局，尝试了网络食品安全溯源机制，提高淘宝食品卖家的准入门槛，对于食品类目下新发布的包装商品，要求卖家必须填写生产许可证编号、品名、厂名、厂址、联系方式、保质期、生产日期、进货日期、数量、供货商、规格、包装方式、产地、配料表、食品添加剂共15种信息。消费者可以向淘宝追根溯源，明确责任方。一旦出现疑似问题商品，淘宝网直接将商品送至有资质的食品检测机构，对认定的问题商品将采取第一时间下架处理，并视情况给予相应处罚，对于问题严重的商家将不再合作。

在大数据的指导下，天猫可以对食品生鲜行业进行全链路预测，对季节性的商品采用C2B预售模式，让供应链变得更短。一旦大数据监测到某地农产品物流变缓的迹象，预测可能产生相应的商品质量风险，天猫会降低该地区的流量调配，并给出风险提示。大数据还能了解消费趋势，帮助食品商家降低成本，保障消费者权益。

9.2 住：智能家居

从最初智能家居概念的提出，到如今智能家居的产品化，智能家居已经历了40多年的发展，我国智能家居行业正以年均19.8%的速率增长。从最初的世界首富比尔·盖茨的智能住宅，到现在可以从淘宝上轻松搜索到的智能家居产品，智能家居从遥不可及到如今的市场产品化，正在经历翻天覆地的变化。

对于智能家居而言，智能化是关键。然而，要打造这样的智能化体验，既需要优秀的硬件制造，也需要统一的技术标准后台，更需要强大的数据分析服务。事实证明，智能家居的发展不能没有大数据的存在，否则很多想法都将成为空谈。

无论是各大手机厂商，还是传统家电厂商，甚至是互联网企业都已经相继在智能家居领域进行战略布局。他们通过对智能家居用户产生的数据进行挖掘，产生数据增值服务，通过数据分析了解用户需求，提高数据利用率，使智能家居设备的数据产生交换与流动。例如，我们家里每天都在使用的电视，在互联网电视平台上每天都会产生大量的用户数据，这些数据可以真实地反映出用户的地理位置、观看时间、内容偏好及社交互动等多方面的信息，采集其中的价值信息进行分析，根据分析结果可以为用户推送不同的内容、产品和展示界面。

通过移动终端、语音交互、智能机器人等实现对智能家居的控制，是当前智能家居行业比较常见也很方便的一种操作方式。但从智能家居行业未来的发展趋势来看，未来智能家居发展的方向将是“去手机化”，一切为人们服务的智能家居场景都是自发触动的。例如，某个周末的早上，用户设定了9点钟起床。那么，到了早上9点，窗帘会自动打开，厨房开始自动烹饪早餐，甚至是一首舒缓的音乐轻轻响起。这些场景的触发不需要用户通过其他方式控制或者下达命令，因为智能家居设备已经将用户的生活习惯数据上传到云服务器，经过一个周期性的用户生活习惯的计算和处理，智能家居能够懂得用户的需求而自动执行，懂得通过“人”的视角理解用户。

案例：无锡市智能家居

在智能家居领域，无锡市推进三网融合工程，大力开发智能家居产品，研发建成一套智能家居系统，包括智能照明、智能家电、温度控制、智能门锁、智能监控、安全防范等子系统。该系统可实现灯光、窗帘控制、家电远程控制、安全防范、可视对讲、视频监控等各类功能。同时，无锡市搭建生活资讯信息与社区服务系统联动的家庭云服务平台，实现家庭与社区的信息互通互联，居民可以通过平台获得想要的生活资讯，也可以获得家庭生活方面的咨询与服务。

2016年，无锡房市快速升温，家装市场也接连带动。市民在众多房屋选择和观摩中的购买意向趋于理性，不少市民将需求目标转向智能化的高品质楼宇，智慧家居成为消费者的刚性需求。目前，无锡电信利用自身掌握的家庭用户群，结合宽带、电视等各种通信产品，与家装、物业等部门联手创新商业模式，给无锡市民提供一站式采购、咨询等服务。智能家居市场也继续拓宽，迈向全市全区域。

9.3 行：智能交通

随着计算机科学技术的发展，城市居民的出行数据被大量采集。在这种情况下，对居民出行行为的研究进入了大数据时代，智能交通系统（Intelligent Transport System，ITS）也随即进入了人们的日常生活。ITS通过对采集的各类交通大数据进行挖掘分析，使交通系统智能化，更好地实现安全、通畅、低公害和耗能少的目标。

目前，ITS大数据的来源主要有以下几个方面。

（1）用户出行的一卡通。以北京为例，交通部可以详细统计出每天进出地铁的人数，获得每个人在地铁上的行踪，统计坐公交车的人数。

（2）运输车辆进行全面监控。所有运输车辆都与GPS卫星连接，国家可以实时监控这些运输车辆的路线。

（3）车联网。由于车联网的逐渐普及，交通部也能掌握车辆出行的数据。

（4）路网监控。国家在道路监控上做了大量投入，重庆高速公路视频监控数据每天就达到50TB，广州每天新增城市交通运营数据记录超过12亿条，每天数据量达到150~300GB，交通部可获得的船舶位置数据、航速数据每天可达5500万条。

目前，ITS的典型应用主要有以下几种。

乘客信息系统

乘客信息系统的目的是通过提供各种不同路线的出行时间对驾驶员的行为产生影响。通过这些信息，驾驶员可以避开发生严重交通堵塞的区域，从而减少交通拥堵，并使其他道路得到更有效的使用。其方法是通过使用感应线圈来测量各路段的交通流，在移动探测车辆（如公交车、出租车或其他一些车队车辆）上安装GPS设备，对出行信息进行实时采集，并在驾驶员选择路线前将各区域的拥挤状况提供给驾驶员。

商用车辆管理

商用车辆管理的目的是为了提高车队运营的效率。车辆通过GPS信号确定其自身位置，并将位置信息发送给车队管理者，管理者通过地图便可以观测到各车辆的具体位置。路线选择软件为货车指定额外的工作，并以电子指令的形式传回给驾驶员。具体的位置信息也可以保存在在途系统中，以便日后的分析。这种在途系统的公告板系统还可以监视车辆运行状况，并在检测到特殊事件发生时向车场提供信息。

公共交通实时信息

实时信息服务是为了提高公共交通服务的可靠性，从而提高公共交通的服务水平。公交车使用GPS和里程表来确定他们在路线上的位置，位置信息通过无线通信设备传到控制中心的传感器上。中心控制系统将公交车实际的位置与预期位置进行对比，计算出公交车延误或提前的时间。这些延误或提前的时间信息将被发布到沿线的其他站点上。到达时间可以显示在站点的信息发布板上，并且可以直接通过手机短信或互联网发送给乘客。为了使晚点的公交车能够挽回时间，甚至可以通过实时调整交通信号灯的时间，使其获得更长的绿灯时间。

电子收费

电子收费系统包括电子票务系统和电子道路收费系统。电子票务系统中的智能卡作为一种电子钱包来使用。智能卡可以在付费站（如银行、小型充值点）充值，然后进行付费。收费交易只是在智能卡与收费机之间完成，而中心结算部门只要在银行中存取款即可。同样地，电子缴费也可以用手机来进行。电子道路收费系统则提供了更便利的支付环境、更畅通的操作流程，降低了支付操作的成本，减少了人工收费系统中由于腐败而带来的费用流失。在电子道路收费中，各种系统普遍使用具有专用短程通信技术的电子标识卡。驾驶员在卡中预存一定数量的金额，这些金额的信息被保存在卡标签或中心系统中。当车辆在道路上行驶时，安装在路边的读卡机将会扫描到电子卡中的标识，并根据其行驶距离来收费。收费的多少可依据所处时间段而上下浮动。当用户账户中没有足够余额或卡中标识与该车不符时，摄像机将会记录下该车牌照并发布该异常信息。

案例：深圳市智能综合交通运行指挥中心

2013年，深圳市综合交通运行指挥中心成立，主要负责深圳市综合交通运行智能化平台系统的建设、管理工作；承担综合交通运输体系的运行监测工作，为城市交通管理提供决策支持等工作。

在数据管理方面，中心通过接入深圳市交通行业的8大类（交通视频数据、城市公共交通、城际交通、两客一危、驾培、高速公路、应急指挥、交通气象）、29个系统、51项数据，初步构建了海、陆、空、铁、城的“交通数据中心”。

在行业监测方面，依托营运车辆GPS监控平台，中心对全市14700多台出租车、4800多辆长途客车、2400多辆危险化学品运输车和2900多辆重型自卸车等进行监测，实现对车辆超速、GPS掉线等违规行为的实时掌控，及时发现车流及客流拥堵情况，提供情报推送等。

中心还通过对海量交通数据的分析和挖掘，为交通管理部门提供科学、全面、深入的分析报告，并多途径、全方位地向出行者发布实时交通信息，营造智慧交通出行环境。

9.4 游：智慧旅游

我国旅游市场发展迅速，但是交通、人流、景区管理等带来的问题也让整个旅游行业的发展充满了挑战。相比一些被曝光的景区事件，另一些景区由于利用信息化技术，对景区管理进行升级改造，不但秩序井然，还让消费者过了把“智慧旅游”的瘾。

“智慧旅游”是智慧城市在旅游城市和城市旅游两大领域的推广型应用，它包含了数字技术、智能技术和虚拟技术等，是数字旅游、智能旅游和虚拟旅游的综合。智慧旅游体现了现代人类社会的实时化、人性化、低碳化、多元化、时尚化、生活化、互动化及国际化的发展趋势，更注重旅游体验的人性化。游客在旅游过程中，可通过各种接入方式全程无差别享受信息化服务。服务内容更多考虑游客的感受和需要。获取服务的方式更多样化，增加服务的互动性和实时性，并要求旅游行业在保证业务规范的基础上不断进行开拓创新。通过产品溯源等信息化手段，保障旅游产品质量；通过精准营销、投诉快速反馈机制、服务满意度、网络评价等方式，保证旅游服务水平；通过差异化竞争，关注用户体验，发掘自身特长，不断开展产品和服务模式创新，提升对游客的吸引力，实现旅游行业收益最大化。另外，智慧旅游能够建立科学、客观的旅游规划建设体系，完善旅游基础设施建设，为旅游管理提供良好基础；建立各级旅游政务管理平台，实现旅游信息高度汇总、问题智能分析辅助决策；创建良好的旅游监督环境，开放更多旅游管理展示和评价窗口给公众，增强旅游管理的透明度。

案例：无锡市智慧旅游立体化营销体系

无锡市旅游局确定了“一中心、四平台”的智慧旅游总体框架，即智慧旅游数据中心、智慧旅游管理平台、智慧旅游服务平台、智慧旅游营销平台和智慧旅游运营平台。目前，智慧旅游数据中心已基本完成游客信息采集与分析系统主要功能的研发，包括旅游团队信息采集、游客反馈信息采集、基于Wi-Fi热点的游客信息采集、游客信息分析等。智慧旅游管理平台已完成电子合同的研发和诚信服务平台的验收，诚信服务平台实现了“诚信榜”，针对无锡市旅行社、酒店、景点、导游、领队人员及游客建立档案管理，进行诚信评定，并为广大游客提供旅游企业信誉等级查询功能，对旅游企业的违规违约、失信等情况进行警示曝光，实现旅游行业公开透明的监督管理。智慧旅游服务平台一方面已建成无锡旅游咨询服务系统并在9家市管江苏旅游咨询点投入使用，咨询服务人员可以通过系统进行接待记录、信息查询、信息录入、在线考勤；另一方面在全市4A以上景区、4星级以上乡村旅游区（点）推进免费Wi-Fi覆盖提升行动。目前，4星级以上乡村旅游区（点）和4A以上景区已基本完成Wi-Fi全面覆盖。

智慧旅游营销平台通过和马蜂窝、百度等大平台合作，极大地提升了无锡旅游营销效率。通过和全国最大的旅游攻略社区——马蜂窝网站的全面合作，平台全年新增752篇游记，制作五本无锡旅游攻略，攻略月均下载量达到22.75万，无锡已成功上升为一类旅游目的地。通过和全国最大的搜索引擎——百度的合作，无锡建设完成全省第一个、全国第三个城市百科（见图9-1），极大地增加了无锡旅游的曝光量。作为自由、开放的网络平台，无锡百度城市百科吸引着用户参与其中，共同感受无锡这座城市所蕴含的无限精彩与活力。无锡市旅游局还开通了官方微博微信，官方微博的粉丝数已达到29万，微博影响力在全省排名第2位，最好成绩是全国旅游微博排名第9位；官方微信已有2.5万粉丝，发表原创文章200多篇，最高阅读数10万以上。

图9-1 无锡城市百科

数据信息成为旅游智慧化发展的利器。无锡市旅游局在2016年积极推进电子合同和游客信息采集工作在旅行社和景区的应用，电子合同已在8家大型旅行社开展试用工作。针对使用过程中出现的问题，技术公司都在第一时间及时完善，上半年已完成在各大旅行社的全面推广。4A级以上景区开始报送每天入园人数数据，用来和游客信息采集与分析系统进行比对，完善数学模型，逐步提高系统提供数据的精准度。下半年，无锡市和省局客情系统进行数据对接，通过购买数据服务的方式，购买“基于电信客户的客源分析数据”和“游客行为分析数据”，在扩大智慧旅游数据中心数据量的同时增加对游客在锡足迹的分析功能，为旅游局和旅游企业的决策提供更有力的数据支撑。

9.5 购：电商营销

电子商务依托互联网的先天优势，从一开始便积累了丰富的客户行为数据和交易数据。电商企业可以实时地获得客户的基本信息、访问来源、在电商网站浏览的页面、停留时长，以及搜索、加入购物车、提交订单等一系列动作，这些构成了电商大数据分析的基础。通过这些数据，电商企业可以知道客户的基本信息、特征、购物偏好、购物周期以及对电商平台的评价与体验等。对客户数据进行分析，电商企业可以很方便刻画出客户画像，并基于分析的结果进行精细化营销。而大数据在电商行业也已有了非常成熟的应用，并且能贯穿到电商的整个业务流程。目前的电商企业大多都拥有专业的数据分析团队，他们通过分析客户的购买行为来了解客户，并刻画出客户处在购物周期的哪个阶段，以在不同阶段给客户提供不同的营销服务。

电商的营销策略有多种，其中邮件营销是电商企业营销中应用最早也是最广泛的一种手段，具有低成本、高效、针对性强等优点。但邮件营销泛滥的结果就是消费者对这些铺天盖地的广告感到厌烦，毕竟一个单身的男青年也不会总想收到一堆女性化妆品的广告。就在人们认为邮件营销已经毫无潜力的时候，大数据给邮件营销注入了新的活力。通过对客户数据的挖掘和分析，企业可以知道客户处在购物周期的哪个阶段以及需要什么样的产品，并能在客户触发相应的行为后对其进行精准营销。由于深刻地把握了客户的需求时刻，这种精准化的邮件营销能在不过分打扰客户的情况下产生较好的营销效果。我们熟知的很多电商平台会通过大数据对客户行为进行分析，给客户发送个性化的精准邮件。例如，客户在电商网站查看过一个商品却未购买，网站就会分析客户未购买的原因，可能是因为缺货或者价格太贵等，然后在商品到货或降价后通过邮件通知客户，从而赢回客户。

除了邮件营销，大数据技术还被更多地应用于广告的精准营销当中，甚至改变了广告营销的方式。传统广告依赖于媒体，需要预定位置资源并按流量计费。而当前实时竞价的广告形式给传统广告造成了很大冲击，它以受众为基础来定向传递广告，通过大数据实现实时分析和自动竞价并按效果付费。实时竞价是指利用第三方技术在数以百万计的网站上针对每一个客户展示的行为进行评估以及出价。在这种模式下，广告主需要将自己的广告需求放到需求方平台上，互联网媒体也会将自己的广告流量资源放到广告交易平台，需求方平台通过与广告交易平台的技术对接完成竞价购买。广告主可以将目标人群限定在某一范围进行竞价，从而可以用合理的价格达到预想的效果。实时竞价实现了以传统广告位置购买到目标群体定向购买的巨大转变，已经开始大量蚕食传统广告。在我国，腾讯每年几十亿的广告收入，其基础都来源于大数据计算下的精准推荐。在美国，有一半以上的广告都是来自于实时竞价。而在全球，有调查数据显示2014 年通过自动化购买广告的交易金额达到了210亿美元，这个数字到2018年还将增长1.5倍，达到530 亿美元。由此可见，大数据给广告业带来的巨大改变。

另一个电商营销的大数据应用就是个性化推荐。相信很多消费者在上网时都会发现页面上的广告位都在展示昨天甚至前几天浏览过的篮球鞋或者单肩包，又或者你在电商网站搜索、浏览或者购买某商品之后，也会在页面的某个位置看到网站为你推荐的其他商品。这样一个看似简单、普通的展示，却为广大电商企业带来了非常可观的收入。个性化推荐是建立在海量数据挖掘基础上的一种智能营销系统，可以帮助电商网站为客户提供实时且个性化的决策支持。客户在电商网站浏览商品，网站根据客户的行为判断客户的需求并为其推荐合适的商品，自动完成个性化商品选择的过程并将结果实时推荐出去，满足客户当前的个性化需要。

一个好的个性化推荐系统往往能给电商网站带来诸多好处。首先，帮助网站提高成交转化率无疑是最直接的好处。客户在访问电商平台时可能更多的只是逛逛，并没有明确的购买目的。个性化推荐系统能够识别客户动作背后对商品的喜好，从而向客户推荐他们感兴趣的商品，促成购买，完成从访客到顾客的转化。其次，推荐系统为电商平台带来了更多的销售机会。客户在看完或者购买自己需要的商品之后，个性化推荐系统还能在客户的动作发生之后向其推荐关联的有价值的商品。例如，一个人在购买了运动鞋之后，系统可能还会向其推荐运动袜或运动服，客户能够从推荐列表中购买自己确实需要但之前忽略的商品，从而带动整体的销售。最后，个性化推荐也有效地增强了客户黏性，提高客户对网站的忠诚度。一个好的电商网站是能够理解和帮助消费者的，让消费者对其产生更多的依赖。就好比一个人逛商场买衣服，导购员能从顾客的行为判断其喜好并准确地推荐其需要的衣服，这样顾客以后也会更加倾向于光顾这家商店。

案例：京东大数据营销

京东是一家大型全品类综合电商，海量商品和消费者产生了从网站前端浏览、搜索、评价、交易到网站后端支付、收货、客服等多维度全覆盖的数据体系。这些以TB计的高质量多维数据记录着客户长期、大量的网络行为，客户画像据此来还原客户的属性特征、社会背景、兴趣喜好，甚至还能揭示内心需求、性格特点、社交人群等潜在属性（见图9-2）。了解了客户各种消费行为和需求，精准刻画人群特征，并针对特定业务场景进行客户特征不同维度的聚合，就可以把原本冷冰冰的数据复原成栩栩如生的客户形象，从而指导和驱动业务场景和运营，发现和把握蕴藏在细分海量客户中的巨大商机。

图9-2 电商企业客户画像

第10章

大数据在政务领域的应用

10.1 条块分割拖累政务发展

随着新一轮信息技术与产业、经济、社会的深度融合，大数据日渐成为社会发展的战略性资源。国家拥有数据的规模、活性及解释运用的能力，将成为综合国力的重要组成部分，未来对数据的占有和控制甚至将成为国家在陆权、海权、空权之外的另一项核心资产。

面对海量、动态、多样的大数据，传统的思维方式和行为方式面临巨大挑战，尤其是在公共服务领域。大数据时代，如何推进社会治理与政府职能转型，提升公共服务能力和水平，成为了一个全新的课题。

与此同时，大量公共数据由基层各部门分散掌握，由于缺乏统一的数据交换平台，往往形成一个个“信息孤岛”。而这些政务领域的“条”数据具有很多天然的缺陷：第一，领域单一，产生于某一个特定领域，就医疗谈医疗，就教育谈教育；第二，数据封闭，被少数部门独自占有，不共享、不开放；第三，源自事务流，以管理为中心，而不是以人、法人为中心。如何打破这种“信息孤岛”的局面，拆除“数据烟囱”，实现数据的横向互通和共享，成为一个亟待解决的课题。而政府在这方面大有可为之处。

（1）政府要重视数据的挖掘和利用，主动分析、运用数据。

首先，要重视数据收集。政府部门应广泛收集信息，尽可能多收集各类数据。通过对城市地理信息、经济、社会、文化、人口等人文社会信息的挖掘，为城市规划提供辅助支撑；通过对城市道路、车辆信息和实时道路交通信息的挖掘，支持交通管理，缓解交通拥堵；通过对自然灾害历史信息和实时天气信息的挖掘，提高对自然灾害的安全防范能力和应急处理能力；通过对匹配病源情况的数据筛查，构建疾病预防、医疗数据系统，准确找到感染群体、规模特征；通过实时监测水中参数，结合卫星遥感等多源异构数据，分析环境生态变化趋势；利用电力数据分析房屋空置率；建立网络舆情监测体系，绘制社会不同时段情绪波动的实时色彩图，监控社会情绪，构建主动式虚拟社会管理体系和管理模式。

其次，对数据的分析利用也十分重要，因为只有分析才能产生价值。一方面加强与通信产业和软件厂商的合作，把信息化、大数据培训列为日常培训项目之一，培养政务人员使用大数据的习惯；另一方面通过研究历史数据的相互关联找对关系，分析相关性，建立相关性模型，对数据资源进行大量预测、防范和应用。

（2）提高政府部门的信息化基础设施条件，创新政务管理。

在大数据时代，数据就是资源，一个地区在信息和存储等方面的基础设施条件决定了该地区的海量数据能否汇集、存储和应用。大数据存储、分析和挖掘技术与产品往往需要巨大的投资，但是一般的企业很难承受这样的投资，此时政府的作用就尤为重要。因此，为了更好地利用数据创新政务管理，政府需要提高信息化基础设施条件。

信息化网络架构方面，政府可以积极实施“宽带城市”“无线城市”“光纤入户”等战略，构建起多层次、广覆盖的无线宽带网络，不断提升城市介入宽带及WLAN覆盖密度；实施三网融合项目试点，推动宽带通信网、数字电视网、下一代互联网之间的互联互通与资源共享，能为城市居民提供更加多样化的智能服务。

公共数据平台建设方面，政府应该积极支持建立涵盖多部门的电子政务协同办公平台，支撑电子政务的应用数据交换、数据备份、安全监控、网络交换、服务器托管、信息挖掘应用和领导决策辅助等功能，实现政务信息资源的共享，实现跨系统资源整合、跨部门业务协同、跨领域公众服务，提升政府服务的电子化覆盖度、政务信息公开度和共享度，实现工商、税务、财政、质监、统计、外资、环保等部门的业务系统联动。

（3）开放政府公共数据，建立数据资源公共服务平台。

信息公开是电子政务的灵魂，更是信息时代政府职能转变的重要契机。大数据时代下，为了促进数据开放和利用，政府应该构建相应的数据开放工程，强化社会信息的公开透明。一方面，公共服务平台建立了公众与政府间的沟通渠道，让公众参与到政策制定与执行、效果评估和监督之中，使民众参政议政成为可能，帮助政府进行社会管理和解决社会难题；另一方面，政府公开的数据将为企业和个人创造价值，打破政府部门对数据的垄断倾向，将不同的数据整理好开放给社会利用，创造更多价值。

10.2 数据统筹助力决策参考

政府各部门数据资源的协同共享、业务系统的互联互通是大数据治国的关键，必须解决政府各部门条块分割和“信息孤岛”等问题。进行数据统筹，打通政府各部门间数据交换共享的渠道。政府进行数据统筹，关键要抓住“聚、通、用”三个环节。首先，要把分散在各个部门的数据统一汇聚到一个平台上，奠定数据应用的基础；其次，在汇聚之上建立数据共享开放标准和机制，解决数据共享开放的体制和技术难题。在“聚”和“通”之后主动开展更多应用，使相互融通、相互支持的数据形成聚合效应，推动政府各部门业务流程变革，更好地实现简政放权。

政府主导建设的数据交换与共享平台，应该以统一的信息资源编码规范、统一的信息共享交换模式、统一的信息管理方式为基础，引入数据资源目录，各部门在共享交换平台上注册并公布本单位政务数据资源目录和数据资源编码表。数据需求者要想获取数据时，需按照数据提供方的数据资源编码表向其提交所需数据编码，数据提供方解析编码并从前置交换机中查找所需共享数据，以标准文档格式通过数据交换系统传递给使用者。

在跨部门的协同应用中也需要进行数据交换与共享，如行政审批与电子监察系统、网上办事大厅系统和信用信息系统等。通过行政审批与电子监察数据在部门之间进行交换，能实现审批业务调度，推进跨部门协同审批办事，实现一个窗口受理、多部门协同处理。

数据的交换与共享需要建立相应的体制、机制和信息平台，要以“数据共享、互联互通、业务协同”为原则，逐步将信息化建设由传统的碎片式、项目式发展，向集约化、效能型发展转变。

进一步利用大数据打通政务信息孤岛，可以从以下三个方面来推进。

一是进一步推动建设统一的政务数据平台。在不同政府层面率先建立完备的同级政务信息跨部门平台，实现原有信息的跨部门共享与共有存储，原有封闭的政务信息必须在跨部门数据平台实现有效备份。这是要通过改变存储架构来改变政务信息孤岛存在的物理基础。

二是推动建立政务信息共享的制度架构。应在政府内部统筹设置信息化建设与数据建设的推进机构，其重要职能是规范完善政府内部的所有信息化建设与数据建设，打破部门壁垒。在实现横向打通的基础上，进一步推动实现整个政府体系内的纵向信息打通。

三是进一步推动政务信息共享的法律法规体系建设。实现政务信息共享，既要靠政府部门自觉主动，也要靠健全的法律法规体系。应将政务数据共享纳入法治轨道，不但实现政府部门内部的共享，还要利用法律法规推动政务信息与社会信息的共享对接。

案例：佛山市南海区数据统筹

佛山市南海区的数据统筹局从梳理数据资产开始，把分散在各个部门的数据收集起来，进行数据提质，建设基础数据库，再通过应用开发，发挥数据服务治理、服务民生、服务发展的作用，力图解决传统电子政务建设各自为政所带来的问题。目前，佛山市南海区已经形成了一套较为完整的数据统筹机制，通过政府数据资源目录平台与数据资源应用平台，建设基础数据库和跨部门综合管理服务平台，实现数据共享、业务协同，并为决策提供支持。

第一步，数据资产梳理和采集。

南海区数据统筹局首先对南海区的数据资产进行了系统的摸底。数据普查发现，原有政务系统140个，各条线使用到的省、市、国家等上级系统过百个。核心市级系统已建设数据接口，实现了数据互通。但部分单位数据存放在省直属系统数据库，协调难度大。如海关、商检的数据，由于垂直部门的管制而较难采集。

数据统筹的过程中，数据提供方与数据统筹局针对数据采集的相关事宜达成协议。协议内容包括数据使用的原则、分工说明、数据采集的内容及方式、数据应用的范围、安全义务及其他、效力等。

建立数据采集的常态化机制。把数据采集纳入制度化的渠道，建立制衡各部门回避数据共享的机制，同时让各部门都感受到数据统筹的红利，自觉自愿地支持数据统筹工作的开展，最终实现所有的数据都通过机器自动采集，数据实时交换。

第二步，搭建政务资源目录及数据资源应用平台。

数据资源平台是政务大数据共享和开发利用的基础。2014年，数据统筹局推出了新版的数据资源目录平台和数据资源应用平台，数据交换模式为“1×N”的数据共享模式，并加强了数据备份和信息安全平台的建设，为跨部门的信息共享提供技术手段。

数据资源目录平台，按照南海区制定的政务信息资源元数据标准和政府信息资源管理机制，以及统一的目录体系标准规范，实现政务资源的编目、注册、审核、发布、查询、维护、监控和管理等功能。

数据资源服务平台，通过部署数据交换前置机实现异构环境下跨部门的数据共享交换，包含交换管理服务和交换适配器两个模块，采用基于XML的Web Service技术，与资源目录平台交换联动，实现在分散、异构的操作系统和数据库环境下数据资源的共享交换及管理。

数据备份平台，确保计算机系统的数据安全，使在计算机系统失效或数据丢失时能依靠备份尽快地恢复系统和数据，保护关键应用数据的安全。

信息安全平台，采取整体策略，搭建数据信息安全保障系统，保护数据资源免受各种类型的威胁、干扰和破坏。

目前，数据资源目录平台和数据资源服务平台已经实现了工商、质监、劳动、社保、民政、卫生、财政、公安、教育等66个单位的数据注册、查询、共享和交换。

第三步，数据提质。

经过采集、整理，统筹局所掌握的政务结构化数据资产已经超过100TB，但是存在数据质量不高的问题。统筹局进行了数据的清洗、对比和提质，将提质后的数据反馈给各个部门，形成从数据采集到提质、再到应用的闭环。这种做法被统筹局概括为IPO模型，是一个螺旋上升的过程。通过数据统筹提质，确保数据部门权属清晰，避免交叉管理，提高数据质量。

10.3 服务整合创新社会管理

利用大数据可收集到社会各领域的信息，通过综合分析可有效提高社会管理的效率，保障公民安全。在社会管理领域，政府主要从城市管理中遇到的实际问题出发，利用大数据来破解难题。主要模式是通过整合政府相关部门和相关企业的可公开数据，依赖第三方企业开发应用程序并建立大数据分析模型。

案例：无锡市智慧城管系统

无锡市是住建部确定的全国第二批数字城管建设试点城市。为进一步借助信息化技术，创新管理模式，建立健全资源共享、齐抓共管的长效管理机制，提高城市管理效率，无锡市全面推进数字城管系统建设。根据部、省有关数字化城市管理的要求，无锡市先后到深圳、杭州、广州等地调研数字化城管建设情况，学习数字化城市管理平台建设经验，结合无锡城市管理体制特点，制定了《无锡市数字化城市管理总体规划方案》，并首次提出了具有无锡特色的“共享、共建、共用、共维护”四共建设模式。

2015年4月，无锡市数字城管系统正式建成并开始运行。该系统主要包括地理信息普查、系统平台建设和视频监控建设等方面。在地理信息普查方面，以主城区345.3平方公里为基本范围，开展5大类、121小类城市管理部件普查工作，共计采集部件133万个，测定兴趣点和标志物79901个，划分单元网格961个，同时开放地理信息数据共享接口，区级地理信息平台通过该接口共享市级平台数据库中的事件部件数据、空间数据等；在系统平台建设方面，开发了监管数据无线采集子系统、呼叫受理子系统、协同工作子系统、监督指挥子系统、地理编码子系统、基础数据资源管理子系统、综合评价子系统、数据交换子系统、应用维护子系统九个标准子系统，同时提供数字城管二级平台接口，各区和专业部门二级平台可通过该接口与市级平台实现业务数据和评价数据的上传下达；在视频监控建设方面，在51座桥梁和49个学校、农贸市场等重点区域新建视频监控点共100个，并开发了视频抓拍子系统，用于桥面雨雪冰冻情况、水岸环境变化和市容环境秩序的实时监控，同时可为其他部门提供视频资源共享。

为了确保系统顺利运行，无锡市政府专门下发了《无锡市数字化城管专业部门绩效评价办法与无锡市数字化城管案件立案处置与结案标准》的通知。按照市政府文件的要求，无锡市数字城管参与评价的专业部门包括市相关部门、各区政府、有关社会公司，共29个成员单位。目前，各区、联动单位已完成业务终端的安装和培训，并可进行城市管理案件的接收和处置反馈。此外，无锡市配置了约100名市级监督员，工作以样本化考核加区域巡查相结合的方式进行。监督员在日常巡查过程中将无锡市共划分为961个单元网格，并结合无锡市的实际情况，采取样本路段巡查法。监督员在责任单元网格和责任路段进行日常巡查和信息采集，主要采集对象包括城市事件和部件，保证每周责任网格和责任路段全覆盖。

图10-1 无锡市城管局数字城管监督指挥中心

数字城管指挥中心（见图10-1）作为数字城管系统建设的核心项目，在近几年的建设运行过程中也取得了较好的成效。该指挥中心建有18块67寸DLP大屏，32块监控器，一体化呼叫中心一套含25个坐席（含双屏工作站25台），两个机房，内有VOIP服务器、呼叫中心应用和数据库服务器、呼叫中心NAS网络存储设备、运营商网络设备等，可为数字城管系统的开发和应用提供硬件设备和网络支撑。

视频监控方面已接入共计60路信号，包括三种类型：一是全市重点环卫设施实时监控情况，主要包括中转站和填埋场监控画面；二是城管支队的路面监控画面，主要是针对道路两侧和城市立面，以及广场、农贸市场等城市管理重点区域进行实时监控；三是安装在执法车上的3G无线视频监控画面，主要用于道路两侧城管违章问题的巡查、动态取证和队员执法过程的记录。

已接入的业务平台系统包括四块内容：一是全市245条道路的监管备案日报系统，各区城管大队每天在该系统上对所管道路的城市问题发现和处置情况进行日报总结；二是12345工单系统，主要用于接受12345转派过来的各类城市管理投诉；三是城管投诉受理系统，主要用于指挥大厅来电、来信、来访和视频抓拍的城管案件的登记、受理、派发和考核；四是市容信息采集系统，包括50台市容信息采集终端和市容信息样本考核平台，主要结合城市管理长效考核办法，针对全市七个区的市容问题进行采集、派遣和整改落实结果评判。

无锡市城市综合管理智慧化建设总体处于实现数字化管理的阶段，建成、建好数字城管系统是现阶段无锡市提高城市管理水平的重点，也是最终实现城市智慧化管理的前提条件。

10.4 资源整合强化公共服务

政府或第三方服务机构利用大数据技术对积累的海量历史数据进行挖掘分析，可以提供丰富的公共服务，产生显著的社会效应。对政府公共服务而言，大数据的意义在于用数据创造更大的公共价值，提升政府网上服务能力，形成政民融合、互动的“互联网+政务服务”新格局。

在我国，各地政府相继建立了本地智慧政务的长远规划。目前，智慧政务建设应用的领域主要包括政务云、协同办公、综合应急智慧平台、资源共享交换平台、决策支持平台等。而随着国家大数据战略的推进和大数据应用的深化，政府为民服务的大数据时代已经来临。2016年4月发布的《国务院办公厅关于转发国家发展改革委等部门推进“互联网+政务服务”开展信息惠民试点实施方案的通知》（国办发〔2016〕23号）针对困扰基层群众的“办证多、办事难”等问题，提出了以实现“一号一窗一网”为目标的“互联网+政务服务”新模式。而“一号一窗一网”取得实效的关键，就在于政务服务大数据的有效整合、开放共享和深化利用。

案例：无锡市政务服务平台

无锡市通过集聚政府信息资源和实体资源，建设统一开放共享的政务服务平台，优化重组涉及政府对公民、法人、社会团体提供服务的政务事项，深刻改革政府服务理念、政务服务方式、公众办事方式、行政组织结构、政府监管方式、政府治理模式，提升政府的综合管理效率和服务水平。

精心组织，整合“无锡模式”

无锡市政府组织专家学者对政府网站群的应用特点、建设模式、发展方向，以及人员、技术、资金等方面开展多方位、多视角的研究，形成了“统一标准、统一建设、统一管理、统一外包”的政府网站群建设指导原则以及“整合、优化、共享、外包”的建设方针。无锡市政府网站群建设立足于高起点规划、高标准设计，以政府业务为主线，以“满足需要、节约成本、安全可靠”为基本原则，以用户为中心、服务为宗旨，以资源整合、信息共享为基础，选用先进的技术架构、成熟的产品以及科学的运维模式，建立了以市政府网站为中心、以部门网站群为基础、以社会公众为服务对象的一站式无锡市政府服务门户。

全面共享，公开政务数据

无锡市政府出台《无锡市政务信息资源共享管理办法》，明确了全市政务应用系统必须利用统一的云计算平台建设，不再采购新的服务器以实现物理上的集聚，为信息资源共享打下硬件基础；城市云计算中心增资4亿元以配合政务云计算平台建设，构建城市云计算中心模式；积极推进城市大数据中心和四大综合信息服务平台建设，2015年4月完成了5个项目的招标工作，7月前完成了各部门的调研，10月完成了39个部门的数据和服务汇聚的协商工作，已入库23个部门近亿条数据，基本完成数据入库工作；建成了人口、法人基础信息库，实现电子政务、城市管理、经济运行和民生服务四大领域运行情况的实时展现和数据挖掘分析，形成“全市政务数据统一部署，基础数据统一集聚，业务数据深度融合，应用数据深入挖掘，主题数据跨地区、跨部门、跨层级共享，目录与交换体系完善”的大数据生态体系。无锡市政府还积极推进各部门加强政务数据的梳理和数字化，促进更多政府部门实现政务数据网上公开。2015年，无锡市信息化和无线电管理局组织相关部门对已公开数据进行更新和补充，同时组织市发改委等第三批10个试点部门公开相关数据。截至目前，全市39个部门共公开数据集达700个，公开数量在国内处于前列。

精准发力，推进简政放权

无锡市政府组织对进驻部门2015年以来发生变化的“审批事项、审批流程、审批环节、审批材料”等进行清理自查，通过与“行政权力网上公开透明运行信息系统”（简称“行权网”）逐条比对，开展“一对一”审核确认，形成“2016版进驻市政务服务中心行政审批事项目录清单”（现有612个审批事项进驻市政务服务大厅集中办理）；开展“一对一”流程优化再造，梳理出即办事项143项，占比23.37%；承诺件办结时限提速率50.43%；同时取消各类申请材料152份，有力地提升了服务效率，最大限度地利企便民。

渠道扩展，畅通政民互动

无锡市政府整合、融合、联合市属28条热线，实行“12345”一号对外，112家成员单位联动服务，推行“7×24”小时不间断服务，建立了群众诉求受理一体化、处置快速化、服务优质化的服务机制；梳理热点知识问答，在“中国无锡”门户网站公开，方便群众查询；升级信息化平台，实现“微信公共账号受理、移动视频勘查、移动终端App办理”等服务功能，形成“电话、网络、短信、微信、传真”五位一体的“7×24”在线受理平台，方便群众沟通联系。2016年上半年办复市民各类有效诉求10.5万件，热线服务满意率为99.06%。

精雕细琢，推进智慧政务

由于行政审批服务的受理量大、种类多，为了真正向公众提供便利，解决群众来回跑的问题，无锡市政府政务服务平台推出了网上预审功能，工作人员通过后台对公众提交的申报材料进行传递，相关职能部门在工作桌面进行预审。另外，无锡市政府还编制了一系列的行政审批服务套餐，帮助公众实现一项政务服务全过程的匹配和信息对称。此外，为了响应国家“互联网+政务服务”的建设要求，无锡市已建成“互联网+政务服务”信息平台（一期），开通了“政务服务、公共资源交易、12345热线、中介服务、便民服务”五大服务功能，形成了网上渠道通、服务通、资源通、信息通、监督通的智慧政务服务平台。2016年6月，市政务服务大厅启用“预登记发号系统”，以公民身份证号码作为唯一标识，推动群众办事“一号”申请；行政审批“网上中介超市”上线试运行，取得了良好的成效。

10.5 数据公开辅助政府监督

大数据的集中和整合将加快政府职能、流程的改变，打破政府各部门间、政府与民众间的边界，打开民众参与监督管理的渠道，提高政府各机构协同办公效率和为民办事效率，帮助政府在简政放权的同时由管理型向服务型转变，为社会带来巨大效益。美国前总统奥巴马曾指出，大数据最核心的理念就是要建设开放的政府，这是大数据对于政府最核心的价值。

政府应用大数据帮助监管，既需要政府的顶层设计，更需要从下到上的积极参与。这可从技术和体制两个层面入手：技术层面，要建立政府牵头、企业和个人参与的一体化大数据系统；体制层面，要确立数据的收集、共享、分析、发布、决策和保护机制，建立大数据使用的标准流程和相关法律法规，推动大数据行业规范发展。

具体来讲，政府可以做到以下几点。

（1）借力大数据，加强注册资本登记制度改革后工商部门对企业的事中、事后监管。

注册资本登记制度改革后，企业注册变得相对容易，经营手续相对减少，激发了市场活力，但同时也给监管工作带来新的挑战。变企业年检为报告公示制度后，基层工商部门对企业的直接监管减少，增大了后续监管难度；实收资本不再是工商登记事项，交易风险、经营欺诈等矛盾可能增多。运用大数据可以弥补政府对企业直接监管的减少，在一定程度上解决上述问题。工商部门可以建立包含企业多方面信息的大数据仓库，并采用可行的算法对数据仓库展开挖掘，在后台建立企业的评级分类模型、行业前景预测模型、用户文本分析模型，为企业的登记、监管、抽查等提供依据，并在此基础上通过信息公示系统提供预警提示和企业、公众互动功能等，以更好地为企业、公众提供服务。

（2）基于大数据的网络反腐。

利用大数据技术，民众可以分析出任何一位官员背后的关系网络，指出可能存在的各种裙带关系。一件普通的事件很容易引发多米诺骨牌效应，“拔出萝卜带出泥”。近年来，因为网络监督落马的官员不在少数，官员的一言一行都受到网民的监督。网络成为一种监督方式，促使政府官员时刻谨言慎行，更好地执好政、用好权。

案例：上海市利用大数据实现市场监管

2016年5月4日，上海市长宁区市场监管局连续查处了两家非法加工、出售河豚的餐饮店，而线索是来自消费者在大众点评上的“吐槽”。通过长宁区政府与大众点评针对线下食品安全和线上网络订餐监管，联手展开的创新数据和信息共享，长宁市场监管已查处下架了区内700多家有违法行为的餐饮单位。监管部门利用大众点评庞大的后台数据及推送功能，有针对性地展开问题整治，对食品安全进行精准执法；针对大众点评用户的评论特点，制定了“餐饮企业食品安全负面评论关键词搜索清单”，包括“河豚鱼”“罂粟壳”“腹泻”“过期食品”“脏乱差”等十大类关键词。信息共享后，监管部门定期对大众点评数据进行关键词搜索，实地排查。

监管部门长期积累的企业“赏罚”数据、信用等级，也可以成为消费者选择店铺时除了皇冠、星级之外的另一个评价“利器”。浦东市场监管局与网络订餐平台对接，并向全社会开放共享餐厅的营业执照、餐饮服务许可证和食品安全监督公示信息，消费者能够更直观地感受到政府信息的价值，通过其理性选择、用脚投票，用市场无形的手“挤出”不符合法律法规、不符合食品安全标准的商户，从而倒逼餐饮行业提高整体水平。

第11章

大数据在交通领域的应用

交通领域已经成为了大数据技术应用的主要场所，海量的交通数据为发展智能交通奠定了坚实的基础。大数据技术手段能够对各种类型的交通数据进行有效的整合，挖掘数据之间的联系，提供更及时有效的信息，更好地实现智慧交通“保障安全、提高效率、改善环境、节约能源”的核心理念。在传统交通与大数据技术越来越深度融合的趋势下，收集、挖掘、分析、利用交通数据为人类提供更好的交通环境和出行服务，已经成为了这个领域大数据应用的重要任务。

11.1 频繁拥堵造就城市顽疾

城市交通是城市最基础也是最重要的组成部分，与人们的生活息息相关。城市交通是城市经济发展的命脉，在整个社会机制中起着非常重要的纽带作用。随着社会发展，城市规模不断扩大，城市人口呈爆炸式增长，城市的交通状况每况愈下，交通拥堵问题成为制约城市发展的一大瓶颈。

交通拥堵给人们的生活、工作带来诸多不便，城市居民花在路上的时间越来越多，造成时间大量浪费，也造成巨大的间接性经济损失。交通拥堵还使人们时刻处于一种烦躁、焦虑中，严重影响了城市居民的生活。汽车平均每日花在路上的时间增加，从而使汽车耗油量增加，造成能源浪费，加重了城市环境污染。

我国每年投入大量资金进行城市交通建设，但是我国在城市交通管理，尤其是智慧交通管理领域还存在着较大的不足。目前，各地针对相关智慧交通管理技术和理论的研究依然比较缺乏。利用大数据分析技术，可以科学、全面地分析城市公共交通中存在的问题，能够找到影响城市交通的真正瓶颈，提高政府交通管理水平。另外，大数据能够帮助城市提高资金使用效率、降低政府管理成本，以科学管理提升现有道路承载能力，减少道路建设投资。因此，在公共交通方面基于大数据开展智慧交通管理是政府提升城市交通治理能力的重要抓手。

11.2 客流分析改进公交线路设计

城市轨道交通与常规公交作为城市公交系统中不同层次的两种方式，各自所承担的责任、所适合运用的出行距离都有所不同。配合城市轨道交通对常规公交的线路进行调整，可以使两者避免不良竞争而做到扬长避短、优势互补。

公交线路优化设计是其中的一个典型案例。传统的公交线路规划通过大量人力进行人流调查和数据收集，很难对乘客的出行需求作出精准反馈。随着公交卡的普及，乘客每天的出行路线和换乘情况等详细信息完全可以从公交“一卡通”中采集。由于采集样本的数据量巨大，对数据的分析可以准确反映出乘客的实际需求，帮助公交部门调整运营线路，提升公交系统的运行效率。

案例：北京市大数据路线优化

北京市根据公交线路调整方案的不同目标，分析调整方案评估的重点，并确定相关评估指标，从而建立基于多目标的公交线路调整评估方法和指标体系。利用公交“一卡通”数据挖掘处理技术，通过对公交“一卡通”数据、站距表、GIS 数据进行综合分析处理，包括数据解析、车次识别、换乘识别等，获取乘客出行特征和公交运营指标，实现了公交线路调整评估方法和指标体系的量化。

例如，针对某路公交线路进行调整，统计分析其各站点客流量，上行全天客流量为15719人次，北师大—前门段客流量为4665人次，占总客流的30%；下行全天客流量为16421人次，北师大—前门段客流量为3258人次，占总客流的20%。从站点乘降量看，前门乘降量不大，而北师大乘降量较大，说明如果从北师大站断开，引发的换乘并不多；而如果从前门断开，将引发较多换乘。据此对该线路的调整方案为：撤出路段前门大街、西单大街等共21公里，重复设站50 个，替代线路为地铁4号线、2号线。

基于“一卡通”数据的公交线路优化，可以在不增加额外投资的前提下显著提高城市的道路使用效率。经过仿真发现，相关优化可以提升高峰时北京路网通行量10%~15%。这一影响大约相当于修建2~3条地铁的效果，或相当于600亿~1000亿元交通建设投资的效果。可见，大数据的应用对于提升城市管理水平、增强城市建设资金使用效率可以起到明显的作用。

11.3 多源数据辅助交通调查

随着以物联网、车联网为代表的现代信息技术的快速发展，4G网络建设逐步加快，交通基础数据来源得到不断丰富，为获取城市轨道交通调查数据提供了极大的便利。近年越来越多的城市交通调查已经广泛应用了新信息技术调查手段。新调查手段不仅继承了传统信息挖掘技术，还着重对新增信息化资源展开挖掘，有效弥补了传统调查手段的不足，已在某些领域成为主要调查手段。

（1）利用手机移动定位技术，获取居民日常出行轨迹。

如今，手机已经成为人们随身携带的必备设备，手机移动定位技术的成功应用使科研工作者可以轻松获取人的时空信息，由此得到居民出行调查所需的OD（origin-destination，交通起止点）数据，从而避免传统问卷调查方式的各种弊端（如调查工作量大、成本高、存在数据失真风险等），并且能够获得一段时间内连续的OD数据。

（2）利用GPS定位技术，获取车辆运行轨迹。

车辆出行调查以车载GPS为基础，获取车辆的时空变化数据，从而掌握车辆全天的运行轨迹，得到车辆出行OD数据。相比问卷调查方式，这种方式的效果更好，能够得到更广泛的车辆出行数据，从而避免抽样问卷调查的数据精度问题。

（3）利用车载GPS、公交刷卡信息和视频监控系统，获取公共交通相关数据。

受设备技术条件、管理水平等因素的限制，当前城市公共交通系统大都采用固定发车间隔办法。大数据背景下，依靠GPS的定位功能，结合刷卡信息和监控视频识别技术，可以获得公交运营的时空信息及相关的客运量数据，从而掌握公交客运需求的变化规律，满足公交运营实时调度的需要。

（4）利用道路检测设备，获取道路实时流量。

通过在道路沿途定点安装感应线圈、红外监测、视频等设备，实时掌握道路交通流量状态，获取路段全天交通流量变化曲线。而传统的录像法（本质上是人工统计法）、机械计数法和人工统计法存在劳动强度大、耗费大量人力和时间、抽样调查无法获取全体路段流量数据等缺点。

（5）利用视频监测技术，掌握交叉路口车流实时动态。

通过对交叉路口监控视频数据的监测，获取各进口道、各车流方向的实时流量状态，满足为交叉路口的信号灯进行动态配时的数据需求。为此，城市轨道交通以平面交叉的方式通过交叉路口时的信号灯配时问题也将得到有效解决。

城市交通相关数据还有诸多来源，如卫星图片、遥感影像、街道上的传感器、用户交流平台的留言信息、交通服务平台的访问信息等。这些数据对于城市轨道交通调查都具有潜在的利用价值，应当纳入城市交通大数据系统。利用云计算技术和GIS技术可以实现对大规模基础数据的处理、分析和存储，实现在一定的轨道交通区域内的网络化信息管理功能，还可利用移动终端设备进行区域内车辆和客流信息分类查询、管理等相关功能。数据挖掘技术在历次综合交通调查中都有应用，那么在大数据时代，对长期积累的交通大数据进行挖掘，不仅在调查内容上与传统调查衔接，也为交通模型进行多样数据校核提供了辅助。

案例：上海市综合交通特征分析

2014年，上海市开展的第五次综合交通调查广泛应用了新信息技术调查手段。本次交通大数据挖掘对每项数据源均进行了原始数据质量分析和清洗工作，以保证数据挖掘结果的准确性，同时将挖掘结果与经其他渠道统计调查所获得的数据进行比对，也为验证数据挖掘结果的可靠性、固化数据挖掘技术方法提供了有力支撑。例如，在车牌识别数据挖掘方面，将市境出入道路关口识别数据与收费数据比对，将长期在沪使用外地号牌小汽车规模挖掘成果与居民出行家访调查、夜间停车调查、在沪购买交通强制险记录数据进行比对；在移动通信数据挖掘方面，将夜间用户分布结构与常住人口普查数据比对，将轨道交通系统内部乘客换乘特征挖掘成果与轨道交通闸机及运营统计换乘量和线路乘距数据比对等。经检验，在城市用地、长期驻沪外地牌照小客车总量、轨道交通系统内部客流换乘特征、道路交通运行车速等方面，大数据挖掘可以成为调查的主要手段；在分析居民出行方式链特征、潮汐交通特征、职住分布特征等方面，大数据挖掘是辅助调查的重要校核手段。

利用移动通信数据分析人口分布

通过跟踪手机用户的移动通信数据，分析日间、夜间手机用户分布规律性特征，是获得调查期实有人口分布的重要校核数据。这项调查技术曾尝试用于近年一些小样本量调查，但应用于全市性综合交通调查尚属首次，是弥补调查期实际人口统计误差和辅助校核就业岗位分布的重要手段。以一定时间窗内上海市域移动通信用户手机信号出现天数、累计出现时长以及通信信号出现和消失时间作为判断标准，研究特定区域内手机用户信号在不同时段出现的规律性特征，进而挖掘日间、夜间手机用户的分布情况。据分析，夜间手机用户分布密度由内向外逐渐降低，浦西内环线北段人口最为密集。另外，中心区日间固定出现的手机用户规模明显高于夜间，两者比值达1.2~1.4。静安区尤为明显，日间、夜间手机用户比值达1.5。

利用移动通信数据分析通勤与潮汐交通特征

在判断移动通信用户日间、夜间分布规律的基础上，剔除日间、夜间长时间停留在同一地点的用户，进而推断居民通勤出行空间分布特征；同步考虑基站地理空间距离、实际路径距离等多重因素，获取职住出行距离特征指标。据分析，上海市平均通勤出行距离约为8.5千米。郊区进出中心城区的通勤量占全市通勤出行总量的12%，其中近80%通勤量来自近郊区与中心城区之间。工作人口居住特征以陆家嘴和徐家汇地区为例，据统计约90%的陆家嘴地区工作人口居住在中心城区，其中居住在浦东的略高于浦西，且主要集中在轨道交通6号线沿线；约80%的徐家汇地区工作人口居住在中心城区，其中近90%居住在浦西。

利用牌照识别数据分析小汽车总量与快速路车辆特征

长期在沪外地牌照小汽车总量调查一直是历次调查的难点，夜间停车调查、居民出行家访调查等传统调查手段实施难度大、调查成本高。本次调查首次利用车牌识别数据获取长期在上海市使用的外地牌照小汽车总量。通过与夜间停放车调查数据、居民出行调查数据和外地车辆在沪保险数据相比对，验证了利用车牌识别数据作为外地牌照小汽车总量调查的可靠性。今后可利用牌照数据资源，捕捉有进出市境道路关口记录和使用过中心城区快速路的外地号牌小汽车，综合考虑累计在沪及单次在沪停留时间，判断是否属于长期在沪使用的外地号牌小汽车。经计算，2014年上海市实有小汽车约320万辆，其中外地号牌小汽车近100万辆；工作日中心城区快速路（不含外环线）全日驶入车辆中25%为外地牌照，午间平峰外地牌照车辆比例达32%，中环线比例最高，午间平峰外地牌照车辆占驶入车辆总量的40%。

11.4 整合信息优化资源配置

为缓解交通供给与交通需求之间日益突出的矛盾，目前各地交通管理部门建立了功能相对完善的交通指挥控制中心，利用统一交通管理平台来缓解交通、提升交通效率，包括交通信号控制系统、道路交通监控系统、交通诱导显示系统、停车管理系统、交通违章处理系统等，初步实现了交通信号控制、道路监控、交通信息综合查询、有/无线指挥调度及交通诱导等基础功能。

交通服务要提供全面的路况信息，需要交通综合监测网络对城市道路交通状况、交通流信息、交通违法行为等全面监测，采集、处理及分析大量的实时监测数据。管理平台利用各种信息采集技术，如微波采集技术、视频采集技术、环形线圈感应式采集技术等，进行交通数据采集，使公安交管部门不仅具备了交通基础信息，还拥有了各类动态数据，如车辆实时营运信息、道路交通状况等，采集的数据类型包括属性数据、空间数据、影像数据等。随着城市机动车保有量的不断提高，城市道路交通状况日趋复杂化，交通流特性呈现随时间变化大、区域关联性强的特点，需要根据实时的交通流数据及时全面采集、处理、分析等。因此，系统应支持低延时、高并发事务。公众出行服务对交通信息发布的时效性要求高，需将准确的信息及时提供给不同需求的主体。

统一交通管理平台需面向政府、社会和公众提供交通服务，整合各种交通资源信息，优化交通资源配置，为出行者提供安全、畅通、高品质的行程服务，保障交通运输的高安全、高时效和高准确性。

案例：无锡市智慧交通信息工程

无锡市加快了交通领域的智慧化进程，加快交通动态信息感知网络建设，实现对城市道路、交通枢纽、桥梁、河道、港口的实时感知，对客运、载货机车船的动态监管和智能调度，建设交通诱导和停车场诱导系统，大力推进一站式交通信息服务平台建设，推广大数据分析、交通仿真、公交智能查询等智能技术，优化交通运行管理模式，开发智能交通信号控制系统，完善人行横道智能检测系统，提高城市交通畅行率。

统筹规划，编制智慧交通实施方案

智慧交通建设是一项涉及面广、技术和资金密集的庞大系统工程，必须统筹规划，必须有统一的技术标准。为此，无锡市交通运输局联合各相关职能部门，依据城市交通发展的实际需求和信息化基础，结合城市地域特点，因地制宜，突出地域特色，编制无锡市“智慧交通”发展规划，出台“智慧交通”建设实施方案，在总体规划和统一技术标准的基础上整合现有的软件和硬件资源，把交通领域信息化建设与云计算、大数据、物联网等现代信息技术的应用结合起来，统筹推进智慧交通项目建设，通过统一规划、统一建设、统筹协调、有序推动，确保项目建设的开放性、扩展性和可持续性。

示范引领，实施智慧交通综合信息应用服务示范项目

无锡市在全国率先打造了集信息采集、诱导服务、信息共享为一体的智能化综合应用服务平台，完成了交通动态信息感知网络建设，实现了对城市道路、交通枢纽、桥梁、河道、港口的实时感知，对客运、载货机车船的动态监管和智能调度；整合互联网交通安全综合服务平台，构建网上网下综合服务管理体系。一方面，政府可以实时发布交通信息，合理进行交通疏导、突发事件快速处理，利用信息化手段，在主要拥堵路段通过交通信号灯、交通管制等方式进行交通流量疏导，及时将拥堵信息推送至车载终端或手机终端，引导车辆规避拥堵路段并给出行驶路径建议；另一方面，通过媒体网络、运营商的无线通信网络、各个公共场所的LED屏，及时发布道路拥堵、道路管制、交通事故、气象、道路积水等信息，引导市民规避拥堵路段，并为市民提供多渠道的业务处理方式。

均等普惠，推进公共交通智能运营

无锡市公交依托物联网技术，启动以管理创新和主动服务为导向的公交智能化系统建设，由营运调度、ERP综合业务管理平台、电子服务信息发布三大核心平台组成。营运调度管理平台由营运调度、营运监控、计划排班子系统组成，是进行实时监控、营运调度、安全监管、营运分析的管理信息系统，可以实现智能调度、自动违规检测、远程应急指挥调度、自动汇总统计等基本功能。ERP综合业务管理平台包括系统管理、营运管理、票务管理、机务管理、物资管理、人资管理、安全管理、服务管理和报表系统等模块，通过对各个业务条线进行标准化、流程化管理，实现日常业务的综合监控。电子服务信息发布平台能提供公交出行信息查询交互服务，乘客可通过多种途径获得所乘线路的车辆运行信息、精确站间距等，在手机查询方面实现了电信、移动、联通三网合一。

渠道延伸，开通“无锡交警”微信公众号

“无锡交警”微信公众号向关注用户提供了“交通违法查询”“事故快处”“年检预约”“路况查询”“信息变更”“申诉报料”等多项服务功能，缩短业务办理时空距离，减少群众来回奔波，减轻群众负担；提供了机动车、驾驶证、交通违法、出行路况等信息查询和告知提示服务，方便群众及时、准确、动态掌握相关信息，及时办理业务，合理安排出行。平台还推进信息公开，公布驾驶人考试计划、机动车选号号段、强制报废机动车、校车驾驶资格作废等信息，提高了服务管理透明度；开展安全驾驶、恶劣天气注意事项等警示教育，为客货运企业、危化品运输企业等单位提供交通事故、交通违法等交通安全信息通报与查询服务，提高了企业单位和公民的社会责任意识，提高了交通安全社会共治水平；提供办牌办证、交通违法处理、交通事故处理等业务办事指南及咨询互动服务，解答群众办事疑问。目前，粉丝数量突破70万大关，成为名副其实的江苏政务微信第一品牌。

综合以上智慧交通措施，无锡市实现了交通信息无缝化、行业管理精细化、上下游产业普惠化、企业运营高效化。

11.5 智能数据释难最后一公里

尽管公共交通发展迅速，地铁、轻轨、公交车等大规模建设，但交通出行的最后一公里仍然是有待解决的难题。随着“互联网+”政策的实施和交通大数据的发展，公共自行车系统将是解决最后一公里的一个重要方式。

传统公共自行车系统在北京、上海、伦敦、巴黎这种人口密集的大都市都有不错的运作案例，虽然办卡、押金这些麻烦可以通过程序简化等途径解决，但“借、还”这个程序都必须依赖于特定的还车点和固定车桩，因而使传统公共自行车的灵活性和便利度从根本上受到了限制。

近年来，随着智能手机、移动互联网、电子地图、第三方支付等技术的日趋成熟，在一座座正在变得越来越“智能化”的城市中，最后一公里的难题正在通过现代化的手段被破解。

案例：共享单车便捷出行

2016年9月以来，“共享单车”成为一个热点话题。与一般刷卡取车的公共自行车不同，这种共享单车既不需要办卡，也没有固定停车位。依靠“互联网+大数据”，手机扫码代替了开锁，单车的位置变成手机地图上的一个个点，可以在城市里任意穿行，有助于解决城市交通最后一公里问题的难题。

一座城市投放多少量共享单车，需结合城市人口、公交系统、私家车、道路等各项数据，进行复杂且高难度的数据运算分析得出。这部分数据可以通过政府部门的数据公开和共享获得。

共享单车利用地理位置大数据实现智能停放和寻车功能，依靠以GPS为基础的地图定位，以地理位置数据为依据来进行管理。共享单车的智能锁包括卫星定位、远程开锁等功能，锁内集成与云端的通信能力，及时将车辆所在位置和车辆当前状态报送至云端。

共享单车可以记录地理位置、骑行时间、行走轨迹、违规操作等数据，把这些数据整合进一个平台，使租车行为具备了识别度。利用大数据分析，可以尽可能真实地判断租车行为的优劣，不仅确保单车利用率最优化，还将为评判个人的社会信用输出新的参数。例如，为减少不文明使用，共享单车为用户建立征信系统：满分100分，正常骑行加分，出现违规操作扣分；当GPS定位发现用户把自行车短暂地变为私有财产，平台将通过扣减信用分等方式进行惩罚。共享单车产生的个人信用数据可以成为个人信用画像的一部分，骑车行为将影响到个人的征信记录。

第12章

大数据在医疗领域的应用

医疗本质上是实践科学，所有医生都要通过无数次的实践和总结才能达到最终治病救人的效果。当人们可以依靠大数据、机器学习等先进的计算机技术对临床经验进行总结时，人们利用大数据辅助分析病情的能力也会与日俱增。

医疗大数据的应用主要是利用互联网以及大数据技术对各个层次的医疗信息和数据进行挖掘和分析，为医疗服务的提升提供有价值的依据，使医疗行业的运营更高效，服务更精准，最终降低患者的医疗支出。

医疗行业基础数据的来源有多种，如以下几个方面。

病人就医数据

病人就医数据是医疗大数据最基础、最庞大的原始资源。患者从入院挂号开始，系统便会录入病人的所有基本信息。随后在就医环节，患者的病情、化验数据、医疗影像等信息也将被录入数据库。看病结束以后，患者的费用信息、报销信息、医保使用情况等也会被添加到医院的大数据库中。

临床实验数据

临床实验数据也是医疗大数据的一个重要组成部分。一张普通CT图像含有大约150MB的数据，一个标准病理图所包含的数据则接近5GB。如果将这些数据量乘以人口数量和平均寿命，仅一个社区医院累积的数据量就可达数万亿字节甚至数千万亿字节（PB）之多。

制药企业数据

药物研发所产生的数据是相当密集的，即使是中小型的制药企业，其数据也在万亿字节（TB）以上。

健康设备数据

随着便携式可穿戴医疗设备的普及，个体健康信息都将被随时随地采集，并直接连入互联网，由此收集的个人健康数据信息量也将是不可估量的。

上述基础数据通过售卖或者合作的方式到达大数据公司，再由这些公司对数据的整理和分析而形成相关的大数据产品。当数据积累到一定规模后，大数据产品可以被商业化，应用到医疗健康服务产业，最终提升医疗行业效率和医疗服务的精准度。

12.1 医疗数据挖掘行业价值

基于互联网的数据传输与分析技术，大数据在医疗行业的应用已逐步受到市场的关注。目前已有越来越多的企业开始发展互联网及移动医疗服务，大数据的应用也被逐渐提上日程。

随着互联网技术和大数据应用的提升，医疗行业能够通过分级诊疗使医疗效率更高，服务更精准。例如，小微病患者可自行诊疗，或到附近的诊所及社区服务站进行医治，将大医院等优质医疗资源留给重大疾病或突发疾病患者。同时，大数据技术还可以充分利用现有的业务系统和业务能力，整合更多的新数据，并提供一个集成化的方法来利用所有的数据，加快产品上市的时间，降低运营支出，使医院、药企、保险公司以及其他个体得到相应的价值。

对于医院而言，大数据的价值在于能够提升医院管理水平、服务效率以及临床诊疗的效果。医院的信息化建设是使其大数据发挥价值的基础，目前大部分的医院都在信息化建设方面进行投入。

对于药企而言，将大数据技术应用于药品的研发，既可以节省研发成本，缩短研发周期，还可以根据病例的相似性找到度量，预估药物的有效性，分析疾病的态势。如将药企和医疗大数据联网，药企可以借助信息平台实时了解患者的用药情况，对药物的有效性进行临床评价和分析，对新产品的开发也有指导意义。而且，在药品的销售环节，大数据还能帮助药企节省营销成本，提升营销精准率。

对于医疗保险企业而言，大数据的价值在于能够提供更精准的保险服务，降低赔付险支出。在医疗社保方面，保险公司可以更多地利用信息技术使医疗服务的提供更加便捷。在商业医疗保险方面，应用大数据挖掘可以剖析参保人群的费用驱动因素及健康情况，深度剖析用户需求，为精准定价提供有力支持，并据此为客户量身定制相关增值服务。

案例：无锡市智慧健康工程

无锡市智慧健康工程的主体是建成“一系统、三中心、一平台”，包括居民健康卡系统、居民健康档案数据中心、医疗数据中心、公共卫生数据中心和区域卫生信息平台，并与市人口管理综合系统实现整合。建成全市居民健康档案、电子病历、卫生资源、药品器材四个基础资源库。建成区域人口健康管理信息平台，实现全市各级各类人口管理和医疗卫生机构信息共享与业务协同。连通无锡城市大数据中心和全市民生服务综合信息服务平台，实现区域卫生信息平台与人口、公安、社保、民政、国土等部门以及广大市民的信息交互与资源共享。

建设居民健康卡系统

健康卡作为管理居民健康载体的唯一身份识别，实现全市居民一人一号一卡。健康卡内集合了个人基本信息、健康体检、接诊记录、居民健康档案信息等系统化档案记录，将实现居民健康“记录一生、服务一生、管理一生、受益一生”的目标。依托居民健康档案数据、医疗和公共卫生数据中心以及区域人口健康管理信息平台，建设双向转诊系统、远程会诊系统、区域大型医疗设备共享系统、疾病监测系统、卫生应急系统、卫生资源配置系统、地理信息系统卫生应用和决策支持系统、卫生资源应用绩效管理系统、居民自助服务系统、物联网居家健康管理系统等，推动实现市域医药卫生资源均衡配置。区域人口健康管理信息平台与食品药品监管、医保结算平台对接，建立医保控费与药品全程监管系统。以信息化为载体，试点推进医疗卫生服务与机构养老服务融合发展。通过无锡城市大数据中心和全市民生服务综合信息服务平台，实现区域卫生信息平台与人口、公安、社保、民政、国土等部门以及广大市民的信息交互与资源共享。

建设居民健康档案数据中心

建设并完善居民健康档案及与其相关的社区体检子系统、儿童保健子系统、妇女保健子系统、老年保健子系统、社区慢病管理子系统、社区传染病管理子系统、社区康复管理子系统、健康教育管理子系统、计划生育管理子系统、计划免疫子系统、家庭病床子系统。以居民健康档案为核心采集整合各级各类医疗机构产生的个人健康数据，为居民提供全市联动的基本医疗和基本公共卫生服务。目前，无锡市已进入全面实施阶段，建立动态管理的健康档案总计530余万份；部分地区建成公共卫生数据中心，累计已开展各类公共卫生服务1240余万人次。

建设医疗数据中心

对各级各类医疗机构的各类医疗数据进行采集和清洗，建设医疗数据中心，整合全市所有医疗机构日常业务活动所产生的临床和机构运营等信息，最终形成符合平台数据标准的以患者为中心的电子病历实体数据库。

建设公共卫生数据中心

改造传染病、慢性病报告管理系统，免疫规划管理系统、院前急救系统，采供血管理系统，食品安全、环境卫生监测系统，职业病防治管理系统和卫生监督管理系统。将分散、异构的公共卫生数据和记录进行规范化整理并进行聚合处理，生成基本数据集所规范的、全面动态的公共卫生业务综合数据信息共享库，形成支撑城市健康管理的大数据。

建设区域人口健康管理信息平台

集成居民健康档案数据中心、医疗数据中心、公共卫生数据中心和人口管理综合系统的数据，按照国家、省卫生计生委相关标准形成健康档案、电子病历两个基本资源库，根据区域实际开发卫生资源、药品器材两个基本资源库，开发平台注册、身份识别、身份统一认证、通信总线、索引、标准、管理等基础功能服务，使全市各级各类医疗卫生机构形成信息可共享、可交换、可监控、可统计分析的有机整体，实现全市居民一人一号一卡和一站式服务新模式，为人口管理、卫生管理、医疗协同服务等多方面应用提供支撑。

无锡市健康医疗系统通过推广预约、简化流程、减少支出等方式，让老百姓实实在在地获益。预约模式获得了广大市民的认同，预约医疗已经成为了市民就医的常用模式。市民的就医流程简化了，就医时间缩短了。无锡市健康档案、数据库、信息平台等建设实现了科学化管理，通过跨医院诊疗信息共享，减少了重复用药和检查；通过区域医疗平台实现了区域医疗业务合作和优质服务下沉，降低了农村山区百姓的健康服务开支。

通过“一系统、三中心、一平台”的建设，整合全市的健康医疗卫生信息资源，为无锡市健康服务人员提供了卫生资源管理、医疗服务管理、公共卫生管理、医疗保障管理和药物管理方面的实时信息支撑和决策支持，实现了全市健康卫生管理和服务的实时化、全程化、动态化、标准化、规范化和科学化，充分提升无锡市健康事业的信息化水平和管理服务水平。

12.2 海量数据助推远程医疗

远程医疗是医疗健康行业的一个重要组成部分，它采用非面对面实体交流的方式，依靠计算机技术、遥感和遥控技术、互联网技术等科学手段，对基层及偏远地区医护人员和患者同时进行医疗服务。通过开展远程医疗会诊、影像会诊、远程术前指导等，可较好地提高疾病的诊断精度；对于疑难疾病患者，可以方便地将多学科的医疗专家组织进行联合会诊，选择出最佳治疗方案，不仅能够降低医疗风险和并发症的发生，同时还能让患者在当地医院享受到相隔千里的大医院的诊疗经验和医技水平。

随着远程医疗政策的不断出台和完善，以及远程医疗技术的不断发展，大数据在远程医疗产业发展中将具有更多的应用，而且扮演更加重要的角色。

大数据有助于患者选择符合自己需求的医疗机构

远程医疗服务体系允许患者依靠庞大的健康公开数据库选择合适的医疗机构，以此保证在较少的成本下达到最优的治疗效果，从而解决传统医疗模式下患者因信息不对称无法选择合适的医院而导致花费高成本却无法得到有效治疗的困境。

大数据有助于实现对患者的远程会诊

医疗远程会诊系统包括车载远程会诊系统以及便携式远程会诊系统，可以便捷地与异地专家沟通交流，同时通过电子病历及医学影像资料等数据实时共享，进行诊断服务。

大数据有助于实现患者就近就医

大数据时代，患者在就近的社区甚至家中就可以接受远程医疗服务。这样可以免去往返的交通成本，节约大量时间和精力，也照顾到了每位患者的个性需求。患者可以将相关体征数据、饮食记录等传输给医生，医生便可以为其诊断和不断调整方案。

大数据有助于对慢性病患者实现远程健康监测

针对糖尿病等慢性病的监护系统，如可穿戴、便携式智能生理参数监测设备，可以对患者的生理参数进行实时监测，纳入电子病历。专家可以采用大数据分析手段，利用数据监控跟踪治疗，实现对患者的健康监测。慢病监测系统可以采集患者的各项数据，将分析结果反馈给监控设备，以便发现患者是否正在遵从医嘱，从而确定今后的用药及治疗方案。

案例：中日医院基于大数据让远程医疗、分级诊疗深入临床一线

过去十几年，由于数据传输的困难，远程医疗在我国一直应用不佳。近年来，云计算的发展推动了远程医疗的应用，它在很大程度上缓解了全国数百万医生同时在线对信息平台的压力。X86架构不仅拥有更高的效能，帮助医疗行业构建弹性、灵活的基础设施，而且标准化、开放性、扩展性可以满足日益变化的需求，支撑关键业务，有效推动云计算在医疗中的应用，最终实现异地实时无延迟的信息共享，满足医学诊断需求。

中日医院也是通过云计算和大数据技术支撑远程医疗和分级诊疗的开展，对现有的病例进行结构化存储，并统计分析以提炼出在临床上现行的治疗经验，让患者可以在本地接受治疗，从而降低非医疗性就医成本。

12.3 移动医疗缓解资源紧缺

近年来，移动医疗逐步走进公众的生活，网络挂号、电子病历、在线咨询、慢性病随访等移动医疗应用给医疗行业带来了巨变。

网络挂号的方式正在成为解决老百姓看病难的一种新途径。患者到医院看病不必再赶早甚至通宵排长队，只要打开网页或者通过手机App就可以提前预约到想要的专家，从而颠覆了以往人们在公立医院“排队3小时，看病3分钟”“门难进、脸难看”的不愉快经历，开启了新的就医体验。

在就医过程中，每位患者会拥有一份电子病历。以往所有的看病经历、诊断结果和用药历史都会记录在病历里，医生可以根据电子病历更及时准确地判断出患者的病情。同时，医院还可以根据患者的电子病历追踪患者从挂号到接受诊疗所花费的时间，并通过数据分析采取有效的措施，减少患者的等待时间，从而提高患者对医疗服务的满意度。

一些突发症患者可以随时通过在线医疗平台、论坛、电话等方式寻找在线医生进行疾病咨询。在线咨询可以快速地让患者与医生建立远程联系，方便患者与医生讨论和了解病症。对于一些常见的、大众的疾病，医生会提供专业的治疗方案和康复指导。而对于需要及时就医的患者，医生也会针对病情给出更合适的医院、医生等就医建议。这样患者就无需再为一点小病去医院排队，医生也能为真正有需要的患者看病，从而使医疗资源能够合理分配。

移动医疗对慢性病的管理是目前业内比较关注的。世界卫生组织的资料显示，慢性病已成为全球居民健康的头号杀手。在我国，每年以糖尿病和心血管疾病为首的慢性病致死人数占据了死亡总人数的85%。当前，我国已进入慢性病的高负担期，具有患病人数多、医疗成本高、患病时间长、服务需求大的特点。对于慢性病患者，仅靠自觉性来治疗并非长久之计。面对慢性病患者群体日益增加的医疗需求，移动医疗可以在慢性病管理中根据症状评估、远程会诊等方式帮助患者调整药物和饮食，患者或家属也可以通过诊疗平台直接与医务人员沟通病情、预约门诊、付款等。移动医疗不仅能提高慢性病患者对疾病控制的主动性，同时还可以有效地收集和评估慢性病的症状，能及时发现急性发作征兆，调整治疗方案，避免患者病情恶化。

案例：春雨掌上医生

春雨掌上医生是以“自诊+问诊”形式做医疗健康垂直领域的手机客户端，拥有49万名公立二甲医院以上的专业医生，任何问题可以在3分钟内得到免费回复。到目前为止，春雨已帮助数千万用户解决身体不适的问题9500万个。

春雨的自诊是指用户在身体不适时使用掌上医生客户端操作，可以点击模拟人体的不适部位，再通过症状选择，即可看到相关的病症名称、检查治疗方法等信息，如图12-1所示。同时，用户还可以通过定位查询附近的药店。问诊则是当用户通过自诊仍无法确定自身疾病时，通过手机终端向医生免费咨询获得帮助的服务。当用户需要更精细化的服务时，可以选择支付一定的费用，与北京三甲医院的知名在职大夫预约通话，进行电话咨询。

图12-1 春雨掌上医生

春雨在医患之间扮演的角色是平台，其借助移动互联网的低成本特点，不仅降低了买方的购买成本，同时也降低了卖方的服务成本，用户足不出户，一样可以得到名医的医疗健康咨询服务。在这个平台上，数据、患者、医生可以自由结合，并彼此提供满意的服务和价格。

而对于春雨这个平台提供者而言，最大的收益其实是数据。这些数据不仅能够用于用户的个性化推荐，更有价值的用处在于能帮助医疗机构进行医疗研究。2012年7月，春雨推出了一款随诊的客户端，那些经过一段时间治疗后出院，但又需要终身呵护的慢性病患者，可以通过客户端根据医嘱记录运动饮食发送给医生，医生可以根据患者核心指标的变化随时启动预警系统。这种方法可以增加随诊病例的数量，验证治疗方法是否合理有效。那些需要专业治疗、呵护的病症患者，也可以随时得到专业的呵护和指导。可见，移动就医平台不仅能为医患创造良好的就医环境，同时还能缓解医疗资源紧缺的状况。

12.4 健康数据实现精准医疗

精准医疗是以个体化医疗为基础、随着基因组测序技术快速进步以及生物信息与大数据科学的交叉应用而发展起来的新型医学概念与医疗模式。其本质是通过基因组、蛋白质组等组学技术和医学前沿技术，对大样本人群与特定疾病类型进行生物标记物的分析与鉴定、验证与应用，从而精确寻找到疾病的原因和治疗的关键点，并对一种疾病的不同状态和过程进行精确分类，最终实现对疾病和特定患者进行个性化精准治疗的目的，提高疾病诊治与预防的效益。海量的基因数据让大数据技术成为了推动精准医疗发展的不二选择。基于基因大数据的分析，将成为未来精准医疗的核心内容。

英特尔生命科学事业部总经理克坦·帕兰杰佩在介绍英特尔在精准医疗方面的愿景时说：“到2020年，计算技术的发展有望帮助医生在一天之内完成精准医疗的主要过程，包括病患或病灶组织基因测序的检测、基于基因序列的数据分析以及根据结果分析作出的疾病诊断，并提供个性化的治疗方案。”

案例：微软亚洲研究院利用大数据推动癌症精准医疗

癌症一直是困扰医学界的难题之一。由于相同癌症患者的表现并不相同，因此每位患者的癌症实则都是一种独立的疾病。即使拥有丰富临床经验的肿瘤医生，也很难作出100%准确的分析和判断。因此，推动癌症的精准医疗是人类迫切希望解决的问题。

微软亚洲研究院一直将数字医学影像识别作为主攻方向之一，希望通过计算机视觉领域的最新技术加速推动精准医疗。从2014年起，微软亚洲研究院的团队开始钻研脑肿瘤病理切片的识别和判断，通过细胞的形态、大小、结构等辅助分析和判断患者所处的癌症阶段。近两年，微软亚洲研究院基于机器学习的方法在该领域取得了两大突破。

第一，实现了对大尺寸病理切片的图片处理。微软亚洲研究院基于Image Net图片数据库，通过自己搭建的机器学习算法不断进行大量训练，最终实现了对大尺寸肿瘤病理切片的图片处理，如图12-2所示。这些大尺寸肿瘤病理切片图的大小达到了普通图片大小的上千倍。

图12-2 机器学习算法对大尺寸病理切片图片处理的流程

第二，基于细胞的分化能力，腺体的状况和有丝分裂水平实现了对病变腺体的识别。所谓腺体，可以简单理解为多细胞的集合体。相对于细胞病变，腺体病变的复杂性和可能的组合都呈指数级增长。对腺体状态的准确识别，可以极大程度地提高癌症分析的准确率，对实现肿瘤的精准医疗有着重要意义。

快速发展的人工智能和大数据技术，能够让计算机通过学习找出恶性肿瘤细胞与正常细胞之间的差异以及癌症病情的分析和判断标准。学习所得的模型能够在扫描病理切片之后给出判断结果，供医生参考。计算机强大的运算能力可以弥补医生由于经验不足引起的误判，或对罕见病及疑难杂症的思虑不周。而且，计算机还能发现人眼不易察觉的小细节，并总结出一些出乎医生意料之外的规律，从而不断完善医生和计算机系统的知识体系。

基于人类在人工智能领域多年来的深入积累，相信大数据技术在癌症精准治疗方面的突破也会指日可待。

第13章

大数据在金融领域的应用

金融涉及支付、贷款、保险、投资等众多领域，存在丰厚的利润，产生了“资金融通”基本诉求。例如，如何基于数据判断资产价格走势、评估企业及个人信用、控制金融风险等要求。这些正是大数据所擅长解决的。而且，从数据量上来看，金融行业也是大数据应用的最佳场所。受行业特性影响，金融机构积累了海量的高价值数据，包括客户身份、资产负债情况、资金收付交易等。金融行业的数据主要来自用户的资金账户和各种交易行为，以及从线下网点、互联网和手机端采集到的用户接触信息等。有数据显示，目前我国各大型商业银行和保险公司的数据量已经达到100TB以上，这些数据相当于5个国家图书馆的信息量总和。

大数据技术在金融行业最早应用于高频交易分析，通过大数据算法可以帮助投资者决定在未来几秒内是买进还是卖出。而现在，大数据在金融行业包括征信预测、交易风险监控预警、反欺诈等诸多方面都有应用。作为发展大数据能力的“领军者”，国内不少银行如招行、工行、光大、中信等以及其他金融机构都在通过大数据来辅助其日常经营决策。

13.1 交易数据饱含金融商机

目前，金融业在开展业务过程中收集了海量的交易数据，包括支付数据、信贷数据、投资数据及保险数据等。这些数据对于整个金融业而言都是一笔隐形的财富，它已成为推动经济转型发展的新动力，为未来金融业的发展带来重要机遇。

支付数据

支付功能是货币的核心功能之一。由于传统商业银行的网上银行服务标准不一，无法为客户提供统一的服务框架。而支付宝、微信支付等互联网支付，基于其庞大的用户覆盖和支付的便捷性，带领用户走上了快捷支付的道路。

与传统支付不同，互联网支付在完成用户原始积累后，凭借着大量商家和用户资源以及海量的交易数据，其支付数据的价值也在迅速扩大。这些大数据不仅奠定了互联网企业全面侵蚀传统金融业务的基础，并且具备了进行金融创新的资本。无论是余额宝，还是零钱理财等互联网货币基金，核心的支撑数据都是支付大数据。

信贷数据

互联网信贷大数据区分为两大类，即平台金融大数据和供应链金融大数据。

平台金融模式通过对自身交易平台众多商户经营活动中的大数据进行数据挖掘，快速地对平台商户进行信用评价和授信服务。这样，平台便可以基于商户的大量交易信息数据对商户进行精确的信用评估，有效解决风险控制问题。

供应链金融模式通常选择依托于某一个实力雄厚的企业，以自有资金或联合金融机构对整个供应链条的参与者提供金融支付和服务，以此满足产业链的协调发展。以京东为例，其通过挖掘自己掌握的各领域关联企业的海量交易数据来评价企业信用、资金运用情况，进而为这些企业提供金融支持和服务。在供应链金融中，京东发挥了对上游企业信息收集、信息挖掘、信用评估的作用，进而向银行提供担保。

保险数据

保险业是一个经营风险的行业。在大数据概念和方法出现之前，保险业传统的风险定价理论都是依据概率论中某些收敛定律完成的。如此的定价方法，通常会带来难以避免的误差。

大数据的来临，使保险业的智能化定价成为可能。未来的保险产品定价将不仅限于保险公司的样本数据库，社交网络上的文字、图片等信息都可以作为定价的参考，以实现保险公司客户的区分，进而使保险公司在对保险产品定价时实现最终的区别定价的目标，从根本上改变保险定价的架构。

国外在车险市场已经有较为成熟的大数据定价产品，保险公司通过车联网技术将驾驶操作、汽车运动状态和车辆周围环境等人、路、车数据信息进行传输和存储，并从这些数据中挖掘出用户的驾驶习惯、思维习惯和行为模式，建立以“从人”为主的多维度定价模型。通过欧美车联网保险市场的实践验证，基于驾驶行为的定价比传统定价模式更为科学和有效。

可见，大数据的价值已经得到互联网公司以及金融机构的认可。金融机构可以从中挖掘到多种新的业务和投资机会，未来金融机构之间的竞争将会在网络信息平台上全面展开。说到底就是“谁掌握的‘拼图’图块多，谁就能快速拼出客户的图谱”，真正地拥有风险定价能力，获得高额的风险收益，最终赢得竞争优势。

13.2 智能分析防范金融欺诈

目前，大数据已经渗透到金融行业的安全业务当中，其中反欺诈就是一项非常重要的应用。

金融业每天都在跟钱打交道，因此成为很多不法分子试图作案的对象。近些年来，关于银行卡被盗刷、银行卡里的钱不翼而飞的消息时有发生，各种形式的欺诈犯罪层出不穷。这不仅给个人带来了巨大损失，也给银行等金融机构带来了经济和名誉的影响。金融领域的技术创新给消费者带来了便利的同时，也带来了相应的风险，金融欺诈形式也表现得多种多样，往往让消费者防不胜防。这时，相应的安全保障措施就显得尤为重要。

拿现在非常普及的支付方式来说，消费者在网上买衣服可以通过在线支付进行付款，在餐馆吃饭可以通过手机端的移动支付直接付账，不用现金，不用带卡，甚至不用见面就完成了支付，不仅方便快捷，而且安全性也非常可靠。但是，消费者在享受便利的同时却不一定知道，支付公司为了保护消费者的利益而在幕后与猖獗的欺诈犯罪行为进行着激烈的斗争。

由于第三方支付的特点是快捷支付，无卡、无密码，只是绑定手机号码，通过动态验证码即可转账，这往往容易被犯罪分子利用，他们通过撞库、木马病毒、钓鱼网站等方式窃取客户信息，进行交易欺诈。近几年来，智能手机逐渐走向成熟化和大众化，用户对智能手机的使用频率和依赖程度也与日俱增，这也逐渐成为欺诈者攻击用户的重要渠道之一。这些诈骗的特点是作案过程非接触化，即犯罪主体与客体没有接触，十分隐蔽，作案手段层出不穷并且高科技化，普通人很难防范。

常用的反欺诈方法是通过分析已发生的欺诈行为，总结现有欺诈的特征，并根据这些欺诈特征制定相应的反欺诈规则来判断交易发生欺诈的概率，同时建立包括身份、手机号、设备、银行卡、账户等在内的行为档案。该行为档案包括这些实体在一定时间段内的交易特征，如平均交易金额、常用的交易类型等。在交易过程中，通过实时计算当前交易和历史交易特征的偏离值，计算该笔交易发生欺诈的概率；也可以利用可观察到的交易特征变量，计算出一个分值来衡量该笔交易的欺诈风险，并进一步将欺诈风险分为不同等级。

而大数据的发展让反欺诈的手段变得更加高效。通过将各家银行、公安、运营商、电商、微博等各家机构的相关安全数据进行关联，建立起一个庞大的反欺诈数据库。技术人员通过已知欺诈事件以及相关实体（如欺诈者、欺诈发生的自助取款机等）找出某一组数据变量（如时间、交易地点、账号地址等），把这些实体之间相似的信息进行关联分析，或者运用社会网络关系分析手段建立起精准的反欺诈智能模型。反欺诈模型会在消费者开始交易的第一个行为开始进行分析，为消费者的每一个动作赋予相对应的风险分数，并为智能性反交易欺诈授权策略提供科学依据，达到实时监测和分析每一笔交易欺诈风险的目的，从而对正在发生的欺诈交易行为进行阻断，避免消费者的损失。

金融反欺诈的未来构想——区块链

当前，互联网贸易均需要借助第三方金融中介机构来处理电子支付业务，这种支付方式受制于金融中介机构的“信用”。金融行业为维护该“信用”，防止系统性风险，需要构建层层审计来控制金融风险，因而导致整个金融系统的成本急剧增加。同时，金融中介机构在支付过程中的“中心”角色也使其具有了“靶子”的风险。

比特币在没有任何中心化机构运营、管理的情况下，非常稳定地运行了七年，实时结算和清算没有出现过一笔账目错误。因此，比特币交易系统的成功引起了人们的注意，其核心——区块链技术被用来解决互联网贸易中金融中介机构的“信用”“中心”问题。

区块链是一个分布式账本，一种通过去中心化、去信任的方式集体维护一个可靠的数据库的技术方案。区块链技术的交易安全性在于构建比特币区块链网络与交易信息加密传输的基础技术，它基于密码学原理（不是基于信用）使任何达成一致的双方直接支付，从而不需要第三方中介的参与。区块链的存储安全性在于其是一种几乎不可能被更改的分布式数据库，包括数据的分布式存储和数据的分布式记录。在区块链上进行支付是全网计算机共同查询区块链数据，共同验证这笔支付是否有效，确认支付后将写入区块链并产生一条不可篡改的记录。由于分散在全网的参与者共同管理维护区块链，该系统的成本因而变得极低，安全性也得到很大的提高。

西班牙桑坦德银行的研究报告显示，到2020年左右，如果全世界所有银行内部都使用区块链技术，每年将节省200亿美元的内部成本。然而，目前区块链技术还处于一个非常早期的阶段，尚未形成统一的技术标准，各种技术方案还在快速发展中。

案例：天下无贼反信息诈骗联盟

目前，大数据反欺诈系统在全球各大金融机构都有非常广泛的应用，帮助企业和消费者挽回了大量的损失。在我国，由腾讯公司联合全国网警、运营商、银行等机构发起的天下无贼反信息诈骗联盟取得了不错的成效。根据天下无贼反信息诈骗联盟的官方数据，联盟成立一年多以来，已经直接劝阻1.84万名用户避免转款达1.56亿元，为9776名受害人快速拦截被骗资金1.09亿元，避免、挽回群众损失合计近2.65亿元。作为我国第一个反信息诈骗联盟，“天下无贼”在先天基础和规模上首先具备了“大平台”的优势，该联盟涵盖了警方、运营商、银行等100多家组织。这种优势决定了反信息诈骗联盟打通了警方、银行、运营商、互联网安全服务商等资源，并且联盟成员的相关安全数据都纳入了平台的数据库中，供联盟成员分享，即聚合了数据源。一旦发现罪案行踪，各联盟成员可同时得到警示，所有联盟内组织即可同时进行追踪和查堵，杜绝了“信息孤岛”的现象。

大平台的优势使联盟的大数据挖掘优势也随之得到明显的体现。在此之前，查处各类信息诈骗的难点在于信息诈骗黑色产业链十分完备，而且跨地域合作，从短信、电话、网络病毒木马等渠道多管齐下。而现在，针对犯罪分子“狡兔三窟”的作案模式，联盟可以同时对各种数据平台的大数据进行挖掘分析，从中看到大量之前单靠个体和单个数据库难以发现的联系。例如，确认某个诈骗电话号码后，联盟中所有成员马上就可以根据这个号码发现骗子的踪迹，包括骗子的通话记录、上网记录、转账记录等，并通过大数据的挖掘和重组，建立起比较完整的踪迹路线图。从前隐藏在各个数据库中的犯罪拼图，如今都在反信息诈骗联盟数据挖掘技术的作用下一块一块地拼接起来。如此，公安便可以组织精准侦查，银行或者电商网站可以阻止骗子注册开户，运营商等可以立即通知和阻止潜在受害用户转款。

在大数据的帮助下，联盟还开展了“警企民”合作的模式，即由民众首先利用反信息诈骗咨询热线或者腾讯手机安全管家对各类诈骗信息进行举报。只要联盟所用的各种数据库有了更新，联盟成员就会分工合作。一方面，警方利用数据获取时间大幅缩短的优势，对黑产业进行闪电打击，大幅提升了侦破该类诈骗犯罪的破案能力；另一方面，联盟中的平台服务商、运营商和银行等对潜在受害者已转出的资金进行智能拦截，联盟的媒体则提醒其他用户避免受骗。同时，用户还可以在微信中实现快速举报、查询诈骗信息。

从中可见，整个大联动的合作模式已经形成了事前预防、事中快速响应、事后快速拦截的立体闭环。因此，尽管诈骗分子所用的骗局招式越来越多，但反欺诈处理的节奏也明显加快。在天下无贼反信息诈骗联盟的运作中，通过大数据和智能技术所产生的打击诈骗罪案效果真正实现了“天网恢恢，疏而不漏”。

13.3 征信预测改善金融风控

在反欺诈之后，大数据征信最近几年逐渐兴起，成为大数据在金融行业防范风险中又一个新的应用。在个人或者企业向银行申请贷款时，银行都会查看个人或企业的信用报告，然后根据申请者的信用记录来决定要不要放贷。征信的最重要作用是为了防范在非即付经济交往中受到损失。金融风控领域的大数据包含了信贷数据、电商数据、理财数据等用户行为数据，大数据征信利用数据分析和模型进行风险评估，依据评估分数预测还款人的还款能力、还款意愿以及欺诈风险。

传统征信主要以银行的信用数据为主，来源单一，而且都为结构化数据。由于我国市场经济较发达国家来说相对滞后，发生在普通人中的信贷活动也十分有限，因此由央行所掌握的征信数据并不能覆盖到所有人群。传统征信在使用上也相当不便利。就个人而言，查询个人信用数据只能到各地的人民银行，并且只有两次免费机会，因此在时间上很难做到实时应用。在互联网和大数据时代，围绕银行构建的个人征信体系被无限丰富化，数据的来源也更多元化，征信的预测不再限定于有信贷记录的人群。对于在生活中留下足够痕迹的人，通过从海量数据中推断其身份特质、性格偏好、经济水平等指标，即能进而判断其信用水平。因此，相对于传统征信，大数据征信模型能纳入更多样的行为数据，带来更有时效的评判标准，使信用评价更精准。

案例：Zest Finance公司

来自美国的Zest Finance是一家应用大数据进行征信的科技金融公司，起初是为传统的发薪日贷款提供在线替代的产品。由于美国传统的信用风险评估体系无法覆盖全部人群，大约15%的人因没有信用评分而被银行排斥在外，无法获得基本的信贷需求。Zest Finance通过大数据挖掘这些人的信用信息，证明缺少信贷信息人群的真正信用状况，帮助他们享受正常的金融服务。

除了解决传统信用评估体系无法解决的无信用评分借贷问题，Zest Finance还面向传统信用评估较难解决的领域，将信用分数低而借贷成本高的人群视为服务对象，利用大数据技术降低他们的信贷成本。和传统征信依赖于银行信贷数据不同，Zest Finance大数据征信的数据来源十分丰富，依赖于结构化数据的同时也导入了大量非结构化数据，既包括传统的信贷数据，同时也包括与消费者偿还能力、还款意愿相关的一些描述性风险特征，如个人提交的公共缴费记录凭证、在网络上的访问行为甚至是搬家次数。相对于传统征信数据的强相关性，这些大数据征信的数据和消费者信用状况的相关性较弱，Zest Finance就利用大数据技术收集更多的数据维度来加强这些弱相关数据的描述能力。这样就使大数据征信不依赖于传统信贷数据，可以对传统征信无法服务的人群进行征信，实现对整个消费者人群的覆盖。

Zest Finance在信用评估中采用了先进的机器学习预测模型和集成学习的策略，对融合多源信息的大数据进行挖掘。传统的信用评分模型一般拥有500个数据项，从中提取50个变量，利用一个预测分析模型做出信用风险量化评估。而在Zest Finance的新模型中，往往要用到3500个数据项，从中提取70000个变量，利用10个预测分析模型进行集成学习或者多角度学习，并按照模型投票的原则形成最终的信用分数。与传统信贷管理业务相比，Zest Finance的处理效率提高了将近90%。风险控制方面，Zest Finance模型的性能相对于传统信用评估模型提高了40%。

大数据技术使“一切数据皆信用”成为可能。大数据征信通过互联网和各方机构的数据整合，不仅覆盖到更多人群，并带来征信效率的提高和成本的下降，为传统征信提供了非常好的补充和相互验证手段。大数据在金融行业的应用相对于互联网行业来说稍晚，但其应用深度和广度还有很大的扩展空间，尤其是它展现出来的价值让金融行业对大数据十分渴望。我国征信体系建设应当关注大数据技术的应用和发展，并加大投入，勇于实践。相信在未来的两三年内，在互联网和移动互联网的驱动下，我国征信体系建设会迎来突破性的发展。

13.4 “互联网+”催生金融产品

互联网金融是传统金融行业与互联网精神相结合的新兴领域，包括三种基本的企业组织形式：网络小贷公司、第三方支付公司以及金融中介公司。当前商业银行普遍推广的电子银行、网上银行、手机银行等也属于此类。

数据产生、数据挖掘、数据安全和搜索引擎技术是互联网金融的有力支撑。其中，社交网络、电子商务、第三方支付、搜索引擎等形成了庞大的数据量，云计算和行为分析理论使大数据挖掘成为可能，数据安全技术使隐私保护和交易支付顺利进行，而搜索引擎使个体更加容易获取信息。这些技术的发展极大程度地减小了金融交易的成本和风险，扩大了金融服务的边界。

由于互联网金融与传统金融在金融业务中所采用的媒介不同，互联网金融通过互联网、移动互联网等工具，使金融业务具备了透明度更强、参与度更高、协作性更好、中间成本更低、操作上更便捷等一系列特征，继而打开了我国互联网金融时代的大门。

案例：蚂蚁金服

我国互联网金融发展的最典型案例是阿里巴巴的金融服务，即蚂蚁金服。以移动互联、大数据、云计算为基础，从成立至今，蚂蚁金服推出的产品与服务成为我国推行普惠金融的重要实践。蚂蚁金服旗下有支付宝、余额宝、招财宝、蚂蚁聚宝、网商银行、蚂蚁花呗、芝麻信用、蚂蚁金融云、蚂蚁达客等子业务板块。

其中，支付宝是以每个人为中心、以实名和信任为基础的生活平台。自2004年成立以来，支付宝已经与超过200家金融机构达成合作，为近千万小微商户提供支付服务，拓展的服务场景不断增加。截至2016年2月底，实名用户数已经超过4.5亿。在覆盖绝大部分线上消费场景的同时，支付宝也正通过餐饮、超市、便利店、出租车、医院等多种场景的拓展，激活传统商业和公共服务。随着场景拓展和产品创新，支付宝已发展成为融合了支付、生活服务、政务服务、社交、理财、保险、公益等多个场景与行业的开放性平台，从而超越支付本身，成为移动互联网时代生活方式的代表。

蚂蚁聚宝是蚂蚁金服旗下的智慧理财平台，致力于让“理财更简单”。用户可以使用一个账号，在蚂蚁聚宝平台上实现余额宝、招财宝、存金宝、基金等各类理财产品的交易。蚂蚁聚宝的门槛低、操作简单，用户还可以获得财经资讯、市场行情、社区交流、智能投资推荐等服务。

芝麻信用是独立的第三方征信机构，通过云计算、机器学习等技术客观呈现个人和企业的信用状况，已经形成芝麻信用评分、芝麻信用元素表、行业关注名单、反欺诈等全产品线。从信用卡、消费金融、融资租赁、抵押贷款，到酒店、租房、租车、婚恋、公共事业服务等，芝麻信用已经在上百个场景为用户、商户提供信用服务，让众多用户享受到了信用的便利。

蚂蚁金服利用阿里巴巴、淘宝、支付宝等电子商务平台上用户积累的信用数据及行为数据，引入网络数据模型和在线视频资信调查模式，通过交叉检验技术辅以第三方验证确认用户信息的真实性，将用户在电子商务网络平台上的行为数据映射为企业和个人的信用评价，向这些通常无法在传统金融渠道获得贷款的弱势群体批量发放“金额小、期限短、随借随还”的小额贷款。同时，蚂蚁金服微贷技术也极为重视对网络的利用。其中，小微企业大量数据的运算即依赖互联网的云计算技术，不仅保证了其安全、效率，也降低了阿里金融的运营成本。另外，对网络的利用也简化了小微企业融资的环节，更能向小微企业提供365×24的全天候金融服务，并使同时向大批量的小微企业提供金融服务成为现实。

可见，互联网与金融业的结合不仅催生出了一系列惠及民生的金融产品，还为小微企业和个人创业者提供了有针对性的金融服务。这种创新局面正在蓬勃发展并将持续演进，未来的互联网金融将有更大潜力和无限可能。

【关注公众号】:奥丁读书小站（njdy668）

1.每日发布新书可下载。公众号首页回复书名自动弹出下载地址。

2.首次关注，免费领取16本心里学系列，10本思维系列的电子书,15本沟通演讲口才系列，20本股票金融，16本纯英文系列，创业，网络，文学，哲学系以及纯英文系列等都可以在公众号上寻找。

3.我收藏了10万本以上的电子书，需要任何书都可以这公众号后台留言！看到第一时间必回！

4.也可以加微信【209993658】免费领取需要的电子书。

5.奥丁读书小站，一个提供各种免费电子版书籍的公众号，提供的书都绝对当得起你书架上的一席之地!总有些书是你一生中不想错过的！上千本电子书免费下载。

参考文献

[1]王露，陈曙东等.大数据领导干部读本[M].北京：人民出版社，2015.

[2]张克平，杨冰之等.智慧城市100问[M].北京：电子工业出版社，2015.

[3]赵以爽，肖伟.Iaa S云计算数据中心设计探讨[J].邮电设计技术，2012（7）：20-24.

[4]王帅.HBase数据库评测关键技术的研究[D].哈尔滨：哈尔滨工业大学，2015.

[5]李圣，黄永忠，陈海勇.大数据流式计算系统研究综述[J].信息工程大学学报，2016（01）.

[6]耿益锋，陈冠诚.Impala：新一代开源大数据分析引擎[J].程序员，2013（8）：95-97.

[7]胡俊，胡贤德，程家兴.基于Spark的大数据混合计算模型[J].计算机系统应用，2015（04）.

[8]王家林，王雁军，王家虎.Spark核心源码分析与开发实践[M].北京：机械工业出版社，2016.

[9]陈明.大数据可视化分析[J].计算机教育，2015（05）.

[10]曾悠.大数据时代背景下的数据可视化概念研究[D].杭州：浙江大学，2014.

[11]张浩，郭灿.数据可视化技术应用趋势与分类研究[J].软件导刊，2012（05）.

[12]袁晓如，张昕，肖何，郭翰琦.可视化研究前沿及展望[J].科研信息化技术与应用，2011（04）.

[13]Han J，Kamber M，数据挖掘概念与技术[M].范明，孟小峰，译.北京：机械工业出版社，2007.

[14]李航.统计学习方法[M].北京：清华大学出版社，2012.

[15]张婧.大数据与数据挖掘[J].科教导刊-电子版（中旬），2016（04）：147-147.

[16]王珊，王会举等.架构大数据：挑战、现状与展望[J].计算机学报，2016（10）.

[17]张沛，杨华飞，许元斌.电力大数据及其在电网公司的应用[J].中国电机工程学报，2014.

[18]秦岭，张志清.信息系统与企业管理战略匹配问题研究[J].中国管理信息化（综合版），2007（06）.

[19]梁凤兰.大数据时代数据管理方式的研究[J].电脑开发与应用，2013（11）.

[20]杨青，黄丽华，何崑．企业规划与信息系统规划战略一致性实证研究[J].管理科学学报，2003（04）.

[21]宗威，吴锋.大数据时代下数据质量的挑战[J].西安交通大学学报（社会科学版），2013（05）.

[22]郭志懋，周傲英.数据质量和数据清洗研究综述[J].软件学报，2002（11）.

[23]陈文捷，蔡立志.大数据安全及其评估[J].计算机应用与软件，2016（04）.

[24]潘月华.浅谈大数据时代下的食品安全管理[J].微量元素与健康研究，2016（05）.

[25]金江军.以信息化思维加强食品安全监管[N].人民邮电报，2014-11-17（005）.

[26]何哲.利用大数据打通政务信息孤岛[J].人民日报，2016–10–10（07）.

[27]刘雪杰，孙明正，李先等.基于轨道的公交线路调整方案评估技术研究[C].2010年中国大城市交通规划研讨会.中国城市交通规划2010年会论文集，2010.

[28]徐玉萍，覃功，张正.城市轨道交通调查大数据应用研究[J].铁道运输与经济，2015（04）.

[29]陈欢，薛美根.大数据环境下上海市综合交通特征分析[J].城市交通，2016（01）.

[30]赵松泽，叶伟春.大数据推动远程医疗产业发展[J].中国信息界，2016（02）.

[31]屈燕，徐一竞.“互联网+”与大数据车险[J].当代金融家，2015（06）.

Table of Contents

版权信息

内容提要

本书编委会

推荐序一

推荐序二

第1章 大数据概述

1.1 什么是大数据

1.1.1 大数据的定义和特征

1.1.2 大数据的发展历程

1.1.3 大数据的来源

1.2 大数据的哲学本质

1.2.1 大数据与世界观

1.2.2 大数据与认识论

1.2.3 大数据与方法论

1.2.4 大数据与价值观

1.3 大数据技术框架

1.3.1 大数据处理系统综述

1.3.2 大数据平台基础

1.3.3 大数据存储系统

1.3.4 大数据计算模型

1.4 大数据发展趋势

1.4.1 大数据的技术发展趋势

1.4.2 大数据的应用发展趋势

第2章 大数据的云计算基础

2.1 虚拟化技术

2.1.1 虚拟化的概念

2.1.2 虚拟化技术分类

2.1.3 虚拟化解决方案

2.1.4 虚拟化技术与大数据

2.2 Open Stack技术

2.2.1 Open Stack概述

2.2.2 Open Stack历史

2.2.3 Open Stack系统架构

2.2.4 Open Stack的优势和劣势

2.2.5 虚拟化与Open Stack技术比较

2.3 Iaa S平台建设

2.3.1 Iaa S平台介绍

2.3.2 Iaa S云平台的种类

2.3.3 Iaa S平台设计

2.3.4 Iaa S平台解决方案

2.3.5 Iaa S平台搭建

第3章 Hadoop基础组件

3.1 Hadoop概述

3.1.1 Hadoop简介

3.1.2 Hadoop系统架构

3.1.3 Hadoop的优势与不足

3.1.4 Hadoop的适用场景

3.1.5 Hadoop的商业模式

3.2 Hadoop分布式文件系统HDFS

3.2.1 HDFS的设计目标

3.2.2 HDFS的基本架构

3.2.3 HDFS的特点

3.2.4 HDFS的优势与缺点

3.3 Hadoop分布式计算框架Map Reduce

3.3.1 Map Reduce简介

3.3.2 Map Reduce的运行流程

3.3.3 Map Reduce与Data Flow比较

3.4 Hadoop统一资源管理框架YARN

3.4.1 YARN架构简介

3.4.2 YARN架构框架

3.4.3 YARN与旧Map Reduce框架对比

3.4.4 YARN与Mesos框架对比

3.5 Hadoop分布式集群管理系统Zoo Keeper

3.5.1 Zoo Keeper简介

3.5.2 Zoo Keeper总体架构

3.5.3 Zoo Keeper的运行模式

3.5.4 Zoo Keeper的设计要点

3.5.5 Zoo Keeper的使用

第4章 Hadoop其他常用组件

4.1 Hadoop数据仓库工具Hive

4.1.1 Hive简介

4.1.2 Hive架构设计

4.1.3 Hive部署模式

4.1.4 Hive与关系型数据库比较

4.2 Hadoop分布式数据库HBase

4.2.1 HBase简介

4.2.2 HBase体系架构

4.2.3 HBase性能分析

4.2.4 HBase容错机制

4.3 Hadoop实时流式处理引擎Storm-YARN

4.3.1 流式处理概述

4.3.2 Storm简介

4.3.3 Storm架构

4.3.4 Storm与Spark Streaming比较

4.4 Hadoop交互式查询引擎 Impala

4.4.1 Impala简介

4.4.2 Impala架构分析

4.4.3 Impala与Hive比较

第5章 Spark内存计算框架

5.1 内存计算与Spark

5.1.1 内存计算概念

5.1.2 内存计算分类

5.1.3 Spark与内存数据处理系统

5.2 Spark概述

5.2.1 Spark架构

5.2.2 Spark的RDD模型

5.2.3 Spark与Hadoop的性能对比

5.3 Spark核心组件介绍

5.3.1 Spark SQL

5.3.2 Spark MLlib

5.3.3 Spark Graph X

5.3.4 Spark Streaming

5.4 Spark集群管理

5.4.1 Spark部署方式

5.4.2 Spark资源调度

5.4.3 Spark任务调度

第6章 大数据可视化技术

6.1 数据可视化的基本概念

6.2 数据可视化的发展趋势

6.3 数据可视化应用与设计

第7章 数据挖掘技术

7.1 什么是数据挖掘

7.2 数据挖掘的流程

7.3 数据挖掘典型算法

7.4 数据挖掘与大数据

第8章 大数据系统评价标准

8.1 大数据系统评价概述

8.1.1 信息时代的“云大物移”

8.1.2 大数据项目失败的常见原因

8.2 评价指标选取原则

8.3 大数据系统评价标准

8.3.1 通用评价要素

8.3.2 专有评价要素

8.4 大数据系统定位

8.4.1 与企业战略相匹配

8.4.2 与企业架构相匹配

8.4.3 与企业需求相匹配

8.5 大数据价值评估模型

8.6 大数据质量评价

8.6.1 数据流程视角

8.6.2 数据技术视角

8.6.3 数据管理视角

8.7 大数据安全评价

第9章 大数据在生活中的应用

9.1 食：食品安全

9.2 住：智能家居

9.3 行：智能交通

9.4 游：智慧旅游

9.5 购：电商营销

第10章 大数据在政务领域的应用

10.1 条块分割拖累政务发展

10.2 数据统筹助力决策参考

10.3 服务整合创新社会管理

10.4 资源整合强化公共服务

10.5 数据公开辅助政府监督

第11章 大数据在交通领域的应用

11.1 频繁拥堵造就城市顽疾

11.2 客流分析改进公交线路设计

11.3 多源数据辅助交通调查

11.4 整合信息优化资源配置

11.5 智能数据释难最后一公里

第12章 大数据在医疗领域的应用

12.1 医疗数据挖掘行业价值

12.2 海量数据助推远程医疗

12.3 移动医疗缓解资源紧缺

12.4 健康数据实现精准医疗

第13章 大数据在金融领域的应用

13.1 交易数据饱含金融商机

13.2 智能分析防范金融欺诈

13.3 征信预测改善金融风控

13.4 “互联网+”催生金融产品

参考文献