大数据技术与应用
上QQ阅读APP看书,第一时间看更新

1.1 大数据概述

1-1 大数据概述

1.1.1 认识大数据

1.大数据介绍

大数据(Big Data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

大数据是现代社会高科技发展的产物,它不是一种单独的技术,而是一个概念,一个技术圈。相对于传统的数据分析,大数据是海量数据的集合,它以采集、整理、存储、挖掘、共享、分析、应用、清洗为核心,正广泛地应用于军事、金融、环境保护、通信等各个行业中。

大数据时代的概念最早是全球知名咨询公司麦肯锡提出的。麦肯锡认为:“大数据的应用,重点不在于堆积数据,而在于利用数据,做出更好的、利润更高的决策。”因此,大数据的核心在于对海量数据的分析和利用。

按照麦肯锡的理念来理解,大数据并不是神秘而不可触摸的,它是一种新兴的产业,从提出概述至今不断在推动着世界经济的转型和进一步的发展。例如,法国政府在2013年投入近1150万欧元,用于7个大数据市场研发项目。其目的在于通过发展创新性解决方案,并将其用于实践,来促进法国在大数据领域的发展。法国政府在《数字化路线图》中列出了5项将大力支持的战略性高新技术,大数据就是其中一项。

综上所述,从各种各样的大数据中,快速获得有用信息的能力,就是大数据技术。这种技术已经对人们的生产和生活方式有了极大的影响,并且还在快速的发展中,不会停下来。

2.大数据的发展历程

大数据的发展主要历经了三个阶段,出现阶段、热门阶段和应用阶段。

(1)出现阶段(1980—2008)

1980年未来学家阿尔文·托夫勒在《第三次浪潮》中将“大数据”称为“第三次浪潮的华彩乐章”。1997年美国宇航局研究员迈克尔·考克斯和大卫·埃尔斯沃斯首次使用“大数据”这一术语来描述20世纪90年代人们面临的技术挑战:模拟飞机周围的气流——是不能被处理和可视化的。数据集之大,超出了主存储器、本地磁盘,甚至远程磁盘的承载能力,因而被称之为“大数据问题”。

谷歌(Google)在2006年首先提出云计算的概念。2007—2008年随着社交网络的激增,技术博客和专业人士为“大数据”概念注入新的生机。“当前世界范围内已有的一些其他工具将被大量数据和应用算法所取代。”曾任《连线》杂志主编的克里斯·安德森认为当时处于一个“理论终结时代”。一些政府机构和美国的顶尖计算机科学家声称,“应该深入参与大数据计算的开发和部署工作,因为它将直接有利于许多任务的实现。”2008年9月,《自然》杂志推出了名为“大数据”的封面专栏,同年“大数据”概念得到了美国政府的重视,计算社区联盟(Computing Community Consortium)发表了第一个有关于大数据的白皮书《大数据计算:在商务、科学和社会领域创建革命性突破》,其中提出了当年大数据的核心作用:大数据真正重要的是寻找新用途和散发新见解,而非数据本身。

(2)热门阶段(2009—2012)

2009—2012年,“大数据”成为互联网技术行业中的热门词汇。2009年印度建立了用于身份识别管理的生物识别数据库;2009年联合国全球脉冲项目研究了如何利用手机和社交网站的数据源来分析和预测从螺旋价格到疾病暴发之类的问题;2009年美国政府通过启动data.gov网站的方式进一步开放了数据的大门,该网站的数据集被用于保证一些网站和智能手机应用程序来跟踪信息,这一行动激发了从肯尼亚到英国等国的政府相继推出类似举措;2009年欧洲一些领先的研究型图书馆和科技信息研究机构建立了伙伴关系,致力于改善在互联网上获取科学数据的简易性;2010年肯尼斯·库克尔发表了大数据专题报告《数据,无所不在的数据》;2011年IBM的沃森计算机系统在智力竞赛节目《危险边缘》中打败了两名人类挑战者,后来《纽约时报》称这一刻为大数据计算的胜利。“大数据时代已经到来”出现在2011年6月麦肯锡发布的关于“大数据”的报告中,正式定义了大数据的概念,之后逐渐受到各行各业的关注。

2012年大数据一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。数据正在迅速膨胀,它决定着未来的发展。随着时间的推移,人们将越来越多地意识到数据的重要性。

2012年美国政府在白宫网站发布了《大数据研究和发展倡议》,这一倡议标志着大数据已经成为重要的时代特征;2012年3月22日,美国政府宣布以2亿美元投资大数据领域,这是大数据技术从商业行为上升到国家科技战略的分水岭;2012年美国颁布了《大数据的研究和发展计划》,英国发布了《英国数据能力发展战略规划》,日本发布了《创建最尖端IT国家宣言》,韩国提出了“大数据中心战略”,其他一些国家也制定了相应的战略和规划。

(3)应用阶段(2013至今)

2014年“大数据”首次出现在我国的政府工作报告中。报告中提到,“要设立新兴产业创业创新平台,在大数据等方面赶超先进,引领未来产业发展。”大数据概念逐渐在国内成为热议的词汇。

2015年国务院正式印发《促进大数据发展行动纲要》,其中明确指出要不断地推动大数据发展和应用,在未来打造精准治理、多方协作的社会治理新模式,建立运行平稳、安全高效的经济运行新机制,构建以人为本、惠及全民的民生服务新体系,开启大众创业、万众创新的创新驱动新格局,培育高端智能、新兴繁荣的产业发展新生态。

2015年大数据的“十三五”规划出台,该《规划》通过定量和定性相结合的方式提出了2020年大数据产业发展目标。在总体目标方面,提出到2020年,技术先进、应用繁荣、保障有力的大数据产业体系基本形成,大数据相关产品和服务业务收入突破1万亿元,年均复合增长率保持在30%左右。

2016年,我国大数据行业发展的相关政策细化落地,国家发改委、环保部、工信部、国家林业局、农业部等均出台了关于大数据的发展意见和方案。2017年,我国大数据产业的发展正式从理论研究加速进入应用时代,大数据产业相关的政策内容已经从全面、总体的指导规划逐渐向各大行业、细分领域延伸。此外,为了抓住产业机遇,推动大数据的产业发展,全国除港、澳、台外的31个省市自治区陆续出台相关政策,据不完全统计,截止到2019年5月,全国各地出台大数据相关政策共计160余条。

3.大数据的影响

大数据的影响主要有以下4点。

(1)大数据对科学活动的影响

人类在科学研究上先后历经了实验、理论和计算三种范式。当数据量不断增长和累积到今天,传统的三种范式在科学研究,特别是一些新的研究领域已经无法很好地发挥作用,需要有一种全新的第四种范式来指导新形势下的科学研究。这种新的范式就是从以计算为中心转变到以数据处理为中心,确切地说也就是数据思维。

数据思维是指在大数据环境下,一切资源都将以数据为核心,人们从数据中去发现问题,解决问题,在数据背后挖掘真正的价值,科学大数据已经成为科技创新的新引擎。在维克托·迈尔-舍恩伯格撰写的《大数据时代》一书中明确指出,“大数据时代最大的转变,就是放弃对因果关系的渴求,取而代之关注相关关系。”也就是说,只要知道“是什么”,而不需要知道“为什么”。这就颠覆了千百年来人类的思维惯例,可以说是对人类的认知和与世界交流的方式提出了全新的挑战。虽然第三范式和第四范式都是利用计算机来计算,但它们在本质上是不同的。第四范式彻底颠覆了人类对已知世界的理解,明确了一点:如果能够获取更全面的数据,也许才能真正做出更科学的预测,这就是第四范式的出发点,这也许是最迅速和实用的解决问题的途径。

因此大数据将成为科学研究者的宝库,从海量数据中挖掘有用的信息会是一件极其有趣而复杂的事情。它要求人们既要依赖于数据,又要有独立的思考,能够从不同数据中找出隐藏的关系,从而提取出有价值的信息。图1-1所示为科学研究范式的发展过程。

图1-1 科学研究范式的发展过程

(2)大数据对思维方式的影响

1)人们处理的数据从样本数据变成全量数据。面对大数据,传统的样本数据可能不再使用。大数据分析处理技术的出现使得人们对全量数据的处理变得简易可行。大数据时代带来了从样本数据到全量数据的转变。在大数据可视化时代,数据的收集问题不再是人们的困扰,采集全量的数据成为现实。全量数据带给人们视角上的宏观与高远,这将使人们可以站在更高的层级看待问题的全貌,看见曾经被淹没的数据价值,发现藏匿在整体中有趣的细节。因为拥有全部或几乎全部的数据,就能获得从不同的角度更细致、更全面地观察、研究数据的可能性,从而使得大数据平台的分析过程成为惊喜的发现过程和问题域的拓展过程。

2)由于是全量数据,人们不得不接受数据的混杂性,而放弃对精确性的追求。传统的数据分析为了保证精确性和准确性,往往采取抽样分析来实现。而在大数据时代,往往采取全样分析而不再采用以往的抽样分析。因此追求极高精确率的做法已经不再是人们的首要目标,速度和效率取而代之,如在几秒内就迅速给出针对海量数据的实时分析结果等。同时人们也应该容许一些不精确的存在,数据不可能是完全正确或完全错误的,当数据的规模以数量级增加时,对大数据进行深挖和分析,能够把握真正有用的数据,才能避免做出盲目和错误的决策。

3)人类通过对大数据的处理,放弃对因果关系的渴求,转而关注相关关系。在以往的数据分析中,人们往往执着于现象背后的因果关系,总是试图通过有限的样本来剖析其中的内在机理。而在大数据的背景下,相关关系大放异彩。通过应用相关关系,人们可以比以前更容易、更便捷、更清楚地分析事物。例如,美国一家零售商在对海量的销售数据处理中发现每到星期五下午,啤酒和婴儿纸尿裤的销量同时上升。通过观察发现,星期五下班后很多青年男子要买啤酒度周末,而这时妻子又常打电话提醒丈夫在回家路上顺道为孩子买纸尿裤。发现这个相关性后,这家零售商就把啤酒和纸尿裤摆在一起,方便年轻的爸爸购物,大大提高了销售额。再如,谷歌开发了一款名为“谷歌流感趋势”的工具,它通过跟踪搜索词相关数据来判断全美地区的流感情况。这个工具会发出预警,告诉全美地区的人们流感已经进入“紧张”的级别。这样的预警对于美国的卫生防疫机构和流行病健康服务机构来说非常有用,因为它及时,而且具有说服力。此工具的工作原理为通过关键词(如温度计、流感症状、肌肉疼痛、胸闷等)设置,对搜索引擎的使用者展开跟踪分析,创建地区流感图表和流感地图(以大数据的形式呈现出来)。然后把结果与美国疾病控制和预防中心的报告比对,进行相关性预测。

(3)大数据对社会发展的影响

在大数据时代,不管是物理学、生物学、环境生态学等领域,还是军事、金融、通信等行业,数据都在迅速膨胀,没有一个领域可以不被波及。“大数据”正在改变甚至颠覆着人们所处的整个时代,对社会发展产生了方方面面的影响。

在大数据时代,用户会越来越多地依赖于网络和各种“云端”工具提供的信息做出行为选择。从社会这个大方面上看,这有利于提升人们的生活质量、和谐程度,从而降低个人在群体中所面临的风险。例如,美国的网络公司Farecast通过对2000亿条飞行数据记录的搜索和运算,可以预测美国各大航空公司每一张机票的平均价格走势。如果一张机票的平均价格呈下降趋势,系统就会帮助用户做出稍后再购票的明智选择。反过来,如果一张机票的平均价格呈上涨趋势,系统就会提醒用户立刻购买该机票。通过预测机票价格的走势以及增降幅度,Farecast的票价预测工具能帮助用户抓住最佳购买时机,节约出行成本。

现在,谷歌的无人驾驶汽车已经在加州行驶,人工智能使自动驾驶得以实现,这些都是基于大量数据解析的结果,背后都有大数据的功劳。

(4)大数据对就业市场的影响

大数据激发内需的剧增,引发产业的巨变。生产者具有自身的价值,而消费者则是价值的意义所在。有意义的东西才会有价值,如果消费者不认同,产品就卖不出去,价值就实现不了;如果消费者认同,产品就卖得出去,价值就得以实现。大数据可以帮助人们从消费者这里分析意义所在,从而帮助生产者实现更多的价值。

此外,随着大数据的不断应用,各行各业数据业务转型升级。例如,金融业原来的主业是做金融业务,靠佣金赚钱;而现如今清算结算可能免费,转而利用支付信息的衍生信息增值业务赚钱。

1.1.2 大数据的特征

1-2 大数据特征

随着对大数据认识的不断加深,人们认为大数据一般具有4个特征:数据量大、数据类型繁多、数据产生速度快和数据价值密度低。

1.数据量大

大数据中的数据量大,指的就是海量数据。由于大数据往往采取全样分析,因此大数据的“大”首先体现在其规模和容量远远超出传统数据的测量尺度,一般的软件工具难以捕捉、存储、管理和分析的数据,通过大数据的云存储技术都能保存下来,形成浩瀚的数据海洋,目前的数据规模已经从TB级升级至PB级。大数据之“大”还表现在其采集范围和内容的丰富多变,能存入数据库的不仅包含各种具有规律性的数据符号,还囊括了各种如图片、视频、声音等非规则的数据。

2011年,马丁·希尔伯特和普里西利亚·洛佩兹在《科学》杂志上发表了一篇文章,对1986—2007年人类所创造、存储和传播的一切信息数量进行了追踪计算。其研究范围大约涵盖了60种模拟和数字技术,包括书籍、图画、信件、电子邮件、照片、音乐、视频(模拟和数字)、电子游戏、电话、汽车导航等。

据全球知名研究机构IDC预测,到2020年全球数据总量将超过40ZB(相当于4万亿GB),这一数据量是2011年的22倍。而在过去几年,全球的数据量正以每年58%的速度增长,在未来这个速度会更快。

2.数据类型繁多

大数据包括结构化数据、非结构化数据和半结构化数据。

1)结构化数据常指存储关系在数据库中的数据。该数据遵循某种标准,如企业财务报表、医疗数据库信息、行政审批数据、学生档案数据等。

2)非结构化数据常指不规则或不完整的数据,包括所有格式的办公文档、XML、HTML、各类报表、图片、图像、音频、视频信息等。企业中80%的数据都是非结构化数据,这些数据每年都按指数增长。相对于以往便于存储的以文本为主的结构化数据,越来越多的非结构化数据的产生给所有企业都提出了挑战。在网络中非结构化数据越来越成为数据的主要部分。值得注意的是,非结构化数据具有内部结构,但不通过预定义的数据模型或模式进行结构化。它可能是文本的或非文本的,也可能是人为的或机器生成的。它也可以存储在像MySQL这样的非关系数据库中。

3)半结构化数据常指有一定的结构与一致性约束,但在本质上不存在关系的数据,如常用于跨平台传输的XML数据及JSON数据等。

据IDC的调查报告显示,拜互联网和通信技术近年来的迅猛发展所赐,如今的数据类型早已不是单一的文本形式,音频、视频、图片、地理位置信息等多类型的数据对数据的处理能力提出了更高的要求。并且数据来源也越来越多样,不仅产生于组织内部运作的各个环节,也来自于组织外部的开放数据。其中内部数据主要包含:政府数据,如征信、户籍、犯罪记录等;企业数据,如阿里巴巴的消费数据、腾讯的社交数据、滴滴的出行数据等;机构数据,如第三方咨询机构的调查数据。而开放数据主要包含网站数据和各种App终端数据,以及大众媒介数据等。

例如,智能语音助手就是多样化数据处理的代表。用户可以通过语音、文字输入等方式与其对话交流,并调用手机自带的各项应用,阅读短信、询问天气、设置闹钟、安排日程,乃至搜索餐厅、电影院等生活信息,收看相关评论,甚至直接订位、订票,智能语音助手则会依据用户默认的家庭地址或是所在位置判断、过滤搜索的结果。

3.数据产生速度快

在数据处理速度方面,有一个著名的“1秒定律”,即要在秒级时间范围内给出分析结果,超出这个时间,数据就失去价值了。大数据是一种以实时数据处理、实时结果导向为特征的解决方案,它的“快”体现在两个层面。

1)数据产生得快。有的数据是爆发式产生的,如欧洲核子研究中心的大型强子对撞机在工作状态下每秒产生PB级的数据;有的数据是涓涓细流式产生的,但是由于用户众多,短时间内产生的数据量依然非常庞大,如点击流、日志、论坛、博客、发邮件、射频识别数据、GPS(全球定位系统)位置信息。

2)数据处理得快。正如水处理系统可以从水库调出水进行处理,也可以处理直接对涌进来的新水流。大数据也有批处理(“静止数据”转变为“正使用数据”)和流处理(“动态数据”转变为“正使用数据”)两种范式,以实现快速的数据处理。

例如,电子商务网站从点击流、浏览历史和行为(如放入购物车)中实时发现顾客的即时购买意图和兴趣,并据此推送商品,这就是数据“快”的价值,也是大数据的应用之一。

4.数据价值密度低

随着互联网以及物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低。如何结合业务逻辑并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题。以监控视频为例,一部一小时连续不间断的监控视频中,可能有用的数据仅仅只有一两秒,但是为了能够得到想要的视频,人们不得不投入大量资金用于购买网络设备、监控设备等。

因此,由于数据采集不及时,数据样本不全面,数据不连续等缘故,数据可能会失真,但当数据量达到一定规模时,可以通过更多的数据达到更真实全面的反馈。

1.1.3 大数据技术应用与基础

1.大数据应用

大数据的应用无处不在,从金融业到娱乐业,从制造业到互联网业,从物流业到运输业,到处都有大数据的身影。

1)制造业:借助于大数据分析,制造商们可以进行预测性维护以及性能分析,从而改进战略决策。

2)汽车业:利用大数据和物联网技术开发的无人驾驶汽车,在不远的未来将走入人们的日常生活。

3)互联网业:借助于大数据技术可以分析客户行为,进行商品推荐和针对性广告投放。

4)金融业:通过大数据预测企业的金融风险,并通过描绘用户画像,清楚用户的消费行为及在网活跃度等,以更好地掌控资金的投放。

5)餐饮业:利用大数据实现餐饮O2O模式,彻底改变传统餐饮经营方式。

6)电信业:利用大数据技术实现客户离网分析,及时掌握客户离网倾向,出台客户挽留措施。

7)能源业:随着智能电网的发展,电力公司可以掌握海量的用户用电信息,利用大数据技术分析用户用电模式,可以改进电网运行,合理设计电力需求响应系统,确保电网运行安全。

8)物流业:利用大数据优化物流网络,提高物流效率,降低物流成本。

9)城市管理:可以利用大数据实现智能交通、环保监测、城市规划和智能安防。

10)医药业:大数据可以帮助人们在医药行业实现流行病预测、智慧医疗、健康管理等,同时还可以帮助人们解读DNA,了解更多的生命奥秘。

11)体育娱乐业:大数据可以帮助人们训练球队,帮助教练做比赛的阵容决定,投拍受欢迎题材的影视作品,并进行较为全面的结果预测。

12)新闻业:利用数据挖掘新闻背后的更多事实,也可以将大数据可视化引入编辑,向公众呈现不一样的视觉故事。

图1-2所示为大数据在金融业中的应用。图1-3所示为大数据中的爬虫抓取架构。

图1-2 大数据在金融业中的应用

图1-3 大数据中的爬虫抓取架构

2.大数据关键技术

(1)大数据采集

大数据采集技术就是对数据进行ETL(Extract-Transform-Load,抽取-转换-加载)操作,通过对数据进行提取、转换、加载,最终挖掘数据的潜在价值,然后提供给用户解决方案或决策参考。是数据从数据来源端经过抽取、转换、加载到目的端,然后进行处理分析的过程。用户从数据源抽取出所需的数据,经过数据清洗,然后按照预先定义好的数据模型将数据加载到数据仓库中去,最后对数据仓库中的数据进行数据分析和处理。数据采集是数据分析生命周期中的重要一环,它通过传感器、社交网络、移动互联网等渠道获得各种类型的结构化、半结构化及非结构化的海量数据。由于采集的数据种类错综复杂,因此进行数据分析之前必须通过抽取技术对数据进行提取,从数据原始格式中抽取出需要的数据。

在大数据采集中面临的主要问题有以下几个。

● 数据源多种多样。

● 数据量大、变化快。

● 如何保证所采集数据的可靠性。

● 如何避免重复数据。

● 如何保证数据的质量。

目前很多互联网企业都有自己的海量数据采集工具,多用于系统日志采集,如Hadoop的Chukwa, Cloudera的Flume, Facebook的Scribe等。这些工具均采用分布式架构,能满足每秒数百MB的日志数据采集和传输需求。

图1-4所示为数据采集在大数据中的应用。

图1-4 数据采集在大数据中的应用

(2)大数据预处理

现实中的数据大多是“脏”数据,如缺少属性值或仅仅包含聚集数据等,因此需要对数据进行预处理。数据预处理技术主要包含以下几种。

● 数据清理:用来清除数据中的“噪声”,纠正不一致。

● 数据集成:将数据由多个数据源合并成一个一致的数据存储,如数据仓库。

● 数据归约:通过如聚集、删除冗余特征或聚类等操作来降低数据的规模。

● 数据变换:把数据压缩到较小的区间,如[0,1],可以提高涉及距离度量的挖掘算法的准确率和效率。

图1-5所示为大数据预处理流程在大数据分析中的地位和作用。

图1-5 大数据预处理流程在大数据分析中的地位和作用

(3)大数据存储

大数据存储是将数量巨大,难以收集、处理、分析的数据集持久化地存储到计算机中。由于大数据环境一定是海量的,并且增量都有可能是海量的,因此大数据的存储和一般数据的存储有极大的差别,需要非常高性能、高吞吐率、大容量的基础设备。

为了能够快速、稳定地存取这些数据,目前至少需要用磁盘阵列,同时还要通过分布式存储的方式将不同区域、类别、级别的数据存放于不同的磁盘阵列中。在分布式存储系统中包含多个自主的处理单元,通过计算机网络互联来协作完成分配的任务,其分而治之的策略能够更好地解决大规模数据分析问题。分布式存储系统主要包含以下两类。

1)分布式文件系统。存储管理需要多种技术的协同工作,其中文件系统为其提供最底层存储能力的支持。分布式文件系统是一个高度容错性系统,被设计成适用于批量处理,能够提供高吞吐量的数据访问。

2)分布式键值系统。分布式键值系统用于存储关系简单的半结构化数据。典型的分布式键值系统有Amazon Dynamo,以及获得广泛应用和关注的对象存储(Object Storage)技术也可以视为键值系统,其存储和管理的是对象而不是数据块。

图1-6所示为大数据的分布式存储系统架构。

图1-6 大数据的分布式存储系统架构

(4)大数据分析与挖掘

数据分析与挖掘的目的是把隐藏在一大批看起来杂乱无章的数据中的信息集中起来,进行萃取、提炼,以找出所研究对象的内在规律。

大数据分析与挖掘主要包含两个内容:可视化分析与数据挖掘算法的选择。

1)可视化分析。不论是分析专家,还是普通用户,在分析大数据时,最基本的要求就是对数据进行可视化分析。可视化分析将单一的表格变为丰富多彩的图形模式,简单明了、清晰直观,更易于读者接受,如标签云、历史流、空间信息流等都是常见的可视化技术。用户可以根据自己的需求灵活地选择这些可视化技术。

2)数据挖掘算法的选择。大数据分析的理论核心就是数据挖掘算法。数据挖掘算法多种多样,不同的算法基于不同的数据类型和格式会呈现出数据所具备的不同特点。各类统计方法都能深入数据内部,挖掘出数据的价值。数据挖掘算法是根据数据创建数据挖掘模型的一组试探法和计算方法。为了创建该模型,算法将首先分析用户提供的数据,针对特定类型的模式和趋势进行查找。并使用分析结果定义用于创建挖掘模型的最佳参数,将这些参数应用于整个数据集,以便提取可行模式和详细统计信息。在数据挖掘算法中常采用人机交互技术,该技术可以引导用户对数据进行逐步的分析,使用户参与到数据分析的过程中,更深刻地理解数据分析的结果。

图1-7所示为大数据可视化显示。图1-8所示为互联网平台通过对用户日常习惯的分析得出该用户的个体标签画像。

图1-7 大数据可视化

图1-8 通过大数据分析得出个体标签画像

3.大数据计算模式

计算模式的出现有力地推动了大数据技术和应用的发展。所谓大数据计算模式,是根据大数据的不同数据特征和计算特征,从多样性的大数据计算问题和需求中提炼并建立的各种高层抽象(Abstraction)或模型(Model)。

传统的并行计算方法,主要从体系结构和编程语言的层面定义了一些较为底层的并行计算抽象和模型。但由于大数据处理问题具有很多高层的数据特征和计算特征,因此大数据处理需要更多地结合这些高层特征考虑更为高层的计算模式。例如,MapReduce是一个并行计算框架,是面向大数据并行处理的计算模型、框架和平台。它最早是由谷歌公司研究提出的,但是在研究和实际应用中发现,由于MapReduce主要适合于进行大数据线下批处理,在面向低延迟和具有复杂数据关系和复杂计算的大数据问题时有很大的不适应性。因此,近几年来学术界和业界在不断研究并推出多种不同的大数据计算模式。例如,加州大学伯克利分校著名的Spark系统中的“分布内存抽象RDD”;CMU著名的图计算系统GraphLab中的“图并行抽象”(Graph Parallel Abstraction)等。

大数据计算模式对应的系统如下。

● 大数据查询与分析计算,包括HBase、Hive、Cassandra、Premel、Impala、Shark、Hana、Redis。

● 批处理计算,包括MapReduce、Spark。

● 流式计算,包括Scribe、Flume、Storm、S4、SparkStreaming。

● 迭代计算,包括HaLoop、iMapReduce、Twister、Spark。

● 图计算,包括Pregel、PowerGraph、GraphLab、GraphX。

● 内存计算,包括Dremel、Hana、Redis。

4.大数据框架

大数据框架是对于可以进行大数据分析处理工具的集合,主要用于负责对大数据系统中的数据进行计算。数据包括从持久存储设备中读取的数据或通过消息队列等方式接入到系统中的数据,而计算则是从数据中提取信息的过程。

不论是系统中存在的历史数据,还是持续不断接入系统中的实时数据,只要数据是可访问的,就可以对数据进行处理。按照对所处理的数据形式和得到结果的时效性分类,大数据处理框架可以分为三类:批处理系统、流处理系统和混合处理系统。

(1)批处理系统

批处理是一种用来计算大规模数据集的方法。批处理的过程包括将任务分解为较小的任务,分别在集群中的每台计算机上进行计算,根据中间结果重新组合数据,然后计算和组合出最终结果。当处理非常巨大的数据集时,批处理系统是最有效的。

批处理系统在大数据世界中有着悠久的历史。批处理系统主要操作大量的、静态的数据,并且等到全部处理完成后才能得到返回的结果。批处理系统中的数据集一般符合以下特征。

1)有限。数据集中的数据必须是有限的。

2)持久。批处理系统处理的数据一般存储在持久存储系统(如硬盘、数据库)中。

3)海量。极海量的数据通常只能使用批处理系统来处理。批处理系统在设计之初就充分地考虑了数据量巨大的问题,实际上批处理系统也是因此应运而生的。

由于批处理系统在处理海量的持久数据方面表现出色,所以它通常被用来处理历史数据,很多在线分析处理(On-Line Analytic Processing, OLAP)系统的底层计算框架使用的就是批处理系统。但是由于海量数据的处理需要耗费很多时间,所以批处理系统一般不适合用于对实时性要求较高的场景。

Apache Hadoop是一种专用于批处理的处理框架,是首个在开源社区获得极大关注的大数据框架。在2.0版本以后,Hadoop由以下组件组成。

1)HDFS(Hadoop Distributed File System, Hadoop分布式文件系统)。HDFS是一种分布式文件系统,它具有很高的容错性,适合部署在廉价的机器集群上。HDFS能提供高吞吐量的数据访问,非常适合在大规模数据集上使用。它可以用于存储数据源,也可以存储计算的最终结果。

2)YARN。YARN可以为上层应用提供统一的资源管理和调度。它可以管理服务器的资源(主要是CPU和内存),并负责调度作业的运行。在Hadoop中,它被设计用来管理MapReduce的计算服务。但现在很多其他的大数据处理框架也可以将YARN作为资源管理器,如Spark。

3)MapReduce。MapReduce是Hadoop中默认的数据处理引擎,也是谷歌公司发表的有关MapReduce论文中思想的开源实现。使用HDFS作为数据源,使用YARN进行资源管理。

图1-9所示为Apache Hadoop官网页面,网址为http://hadoop.apache.org。

图1-9 Apache Hadoop官网页面

(2)流处理系统

流处理系统是指用于处理永不停止的接入数据的系统。它与批处理系统所处理的数据的不同之处在于,流处理系统并不对已经存在的数据集进行操作,而是对从外部系统接入的数据进行处理。流处理系统可以分为以下两种。

● 逐项处理。逐项处理指每次处理一条数据,是真正意义上的流处理。

● 微批处理。这种处理方式把一小段时间内的数据当作一个微批次,对这个微批次内的数据进行处理。

在流处理系统中,不论是哪种处理方式,其实时性都要远远好于批处理系统。因此,流处理系统非常适合应用于对实时性要求较高的场景,如日志分析、设备监控、网站实时流量变化等。

Apache Storm是一种侧重于低延迟的流处理框架。它可以处理海量的接入数据,以近实时方式处理数据。Storm的延时可以达到亚秒级。Storm含有以下关键概念。

1)Topology。Topology中封装了实时应用程序的逻辑。Topology类似于MapReduce作业,但区别是MapReduce最终会完成,而Topology则会一直运行(除非被强制停止)。Topology是由Spouts和Bolts组成的有向无环图(Directed Acyclic Graph, DAG)。

2)Stream。Stream是一种不断被接入Storm中的无界的数据序列。

3)Spout。Spout是Topology中Stream的源。Spout从外部数据源读取数据并接入到Strom系统中

4)Bolt。Bolt用于Storm中的数据处理,它可以进行过滤、聚合、连接等操作。将不同的Bolt连接组成完整的数据处理链条,最后一个Bolt用来输出(如输出到文件系统或数据库等)。

5)Trident的基本思想是使用Spout拉取Stream(数据),并使用Bolt进行处理和输出。默认情况下,Storm提供了“at least once”(即每条数据被至少消费一次)的保证。当一些特殊情况(如服务器故障等)发生时,可能会导致重复消费。为了实现“exactly once”(即有且仅有一次消费),Storm引入了Trident。Trident可以将Storm的单条处理方式改变为微批处理方式,但同时也会对Storm的处理能力产生一定的影响。

图1-10所示为Apache Storm官网页面,网址为http://storm.apache.org。

图1-10 Apache Storm官网页面

(3)混合处理系统

一些处理框架可同时处理批处理和流处理工作负载。这些框架可以用相同或相关的组件和API处理两种类型的数据,借此让不同的处理需求得以简化,这就是混合处理系统。混合处理系统意在提供一种数据处理的通用解决方案。这种框架不仅可以提供处理数据所需的方法,而且提供了自己的集成项、库、工具,可胜任图形分析、机器学习、交互式查询等多种任务。

当前主流的混合处理框架主要为Spark和Flink。

Spark由加州大学伯克利分校AMP实验室开发,最初的设计受到了MapReduce思想的启发,但不同于MapReduce的是,Spark通过内存计算模型和执行优化大幅提高了对数据的处理能力(在不同情况下,速度可以达到MapReduce的10~100倍,甚至更高)。相比于MapReduce, Spark具有以下优点。

1)提供了内存计算模型RDD(Resilient Distributed Dataset,弹性分布式数据集),将数据读入内存中生成一个RDD,再对RDD进行计算,并且每次的计算结果都可以缓存在内存中,减少了磁盘的读写,因此非常适用于迭代计算。

2)不同于MapReduce的MR模型,Spark采用了DAG编程模型,将不同步骤的操作串联成一个有向无环图,可以有效减少任务间的数据传递,提高了性能。

3)提供了丰富的编程模型,可以轻松实现过滤、连接、聚合等操作,代码量相比MapReduce少到“令人惊讶”,因此,可以提高开发人员的生产力。

4)支持Java、Scala、Python和R四种编程语言,为不同语言的使用者降低了学习成本。

图1-11所示为Apache Spark官网页面,网址为http://spark.apache.org。

图1-11 Apache Spark官网页面

(4)主流框架的选择与比较

在实际工作中,大数据系统可使用多种处理技术。对于仅需要批处理的工作负载,如果对时间不敏感,比其他解决方案实现成本更低的Hadoop将会是一个好的选择。

对于仅需要流处理的工作负载,Storm可支持更广泛的语言并实现极低延迟的处理,但默认配置可能产生重复结果并且无法保证顺序。

对于混合型工作负载,Spark可提供高速批处理和微批处理模式的流处理。该技术的支持更完善,具备各种集成库和工具,可实现灵活的集成。Flink提供了真正的流处理并具备批处理能力,通过深度优化可运行针对其他平台编写的任务,提供低延迟的处理,但实际应用方面还不成熟。

解决方案的选择主要取决于待处理数据的状态,对处理所需时间的需求,以及希望得到的结果。具体是使用全功能解决方案还是主要侧重于某种项目的解决方案,这个问题需要慎重权衡。随着大数据框架的逐渐成熟并被广泛接受,在评估任何新出现的创新型解决方案时都需要考虑类似的问题。

5.大数据与云计算

(1)大数据与云计算的联系

大数据与云计算都较好地代表了IT界发展的趋势,两者相互联系,密不可分。大数据的本质就是利用计算机集群来处理大批量的数据,大数据的技术关注点在于如何将数据分发给不同的计算机进行存储和处理。

而云计算的本质就是将计算能力作为一种较小颗粒度的服务提供给用户,按需使用和付费。它体现了以下特点。

1)经济性,不需要购买整个服务器。

2)快捷性,即刻使用,不需要长时间的购买和安装部署。

3)弹性,随着业务增长可以购买更多的计算资源,可以按需购买几十台服务器的1个小时时间,运算完成就释放。

4)自动化,不需要通过人来完成资源的分配和部署,通过API可以自动创建云主机等服务。

用一句话描述就是云计算是计算机硬件资源的虚拟化,而大数据是对于海量数据的高效处理。图1-12所示为大数据与云计算的关系。

图1-12 大数据与云计算的关系

从图1-12可以看出,将大数据与云计算结合会产生如下效应:可以提供更多基于海量业务数据的创新型服务;云计算技术的不断发展降低了大数据业务的创新成本。

(2)大数据与云计算的区别

如果将云计算与大数据进行比较,两者最明显的区别体现在以下两个方面。

1)在概念上两者有所不同。云计算改变了IT,而大数据则改变了业务。然而,大数据必须有云计算作为基础架构,才能得以顺畅运营。

2)大数据和云计算的目标受众不同。云计算是CIO(首席信息官)等关心的技术层,是一个进阶的IT解决方案。而大数据是决策者关注的业务层。

综上所述,大数据和云计算两者已经彼此渗透,密不可分,相互融合,在很多应用场合都可以看到两者的身影。在未来,两者会继续相互影响,更好地服务于人们的生活和学习。

6.大数据与人工智能

(1)人工智能的概念

人工智能(Artificial Intelligence, AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。

人工智能是计算机学科的一个分支,它的主要应用如下。

● 图像识别与语音识别。

● 人机对弈。

● 智能控制与智能搜索。

● 机器人的研究与应用。

用一句话描述就是,人工智能是对人脑思维过程的模拟与思维能力的模仿。但不可否认的是,随着计算机计算能力和运行速度的不断提高,机器的智能化程度是人脑不能相比的。例如,2006年浪潮天梭就可以击败中国象棋的职业顶尖棋手;2016年AlphaGo已经击败了人类最顶尖的职业围棋棋手。图1-13所示为人工智能的发展历程。

图1-13 人工智能的发展历程

(2)大数据与人工智能的区别

如果将大数据与人工智能进行比较,最明显的区分体现在以下两个方面。

1)在概念上两者有所不同。大数据和云计算可以理解为技术上的概念,人工智能是应用层面的概念,人工智能的技术前提是云计算和大数据。

2)在实现上,大数据主要是依靠海量数据来帮助人们对问题做出更好的判断和分析。而人工智能是一种计算形式,它允许机器执行认知功能,如对输入起作用或做出反应,类似于人类的做法,并能够替代人类对认知结果做出决定。

综上所述,虽然人工智能和大数据有很大的区别,但它们仍然能够很好地协同工作。两者相互促进,相互发展。大数据为人工智能的发展提供了足够多的样本和数据模型,因此,没有大数据就没有人工智能。图1-14所示为人工智能通过不断学习挖掘更多的数据价值。

图1-14 人工智能通过不断学习从而挖掘更多的数据价值