购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3
如何处理大数据

随着数据越来越多,我们自然就会面临两个问题,第一个问题是这些大量历史数据还有用吗,为了节省空间可否删除呢?毕竟硬件资源有限。答案是有用的,而且可能带来意想不到的价值。我们可能从大量数据中找到某些行业的规律或规则,这些规则可能会带来巨大收益。第二个问题就是如何处理这些海量历史大数据呢?我们的处理办法就是传统的商业智能领域的数据挖掘技术。另外,还有一种处理技术是目前比较火的云计算技术,这种技术对数据处理的实时性要求很高,一般要求秒级处理。读者可以通过以下一个小例子初步了解一下数据挖掘技术和基于云平台的分布式处理技术。

1.3.1 数据分析与挖掘

下面分享一个真正通过数据挖掘收益的经典案例。最大零售超市沃尔玛拥有世界上最大的数据仓库系统。为了能够准确了解顾客在其门店的购买习惯,沃尔玛对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些。通过数据挖掘和分析,一个意外的发现是:美国中年男子购买尿布的同时一般存在很大的可能会购买啤酒。通过分析后超市将啤酒和尿布摆放位置靠近,这样给超市带来了巨大收益。

国内百度大数据也做过很多次预测分析。2014年世界杯足球赛,百度通过大数据分析了所有比赛,小组赛准确率达到60%,淘汰赛阶段高达100%。还有微软、Google等几家公司都利用大数据做了相应的预测。如图1-2所示是几家公司预测对比。

图1-2

这两个案例都是传统的数据分析领域,最终目的都是为了从大数据中找到一些规则或者作出预测,为企业决策提供帮助,有点像沙里淘金。为了一点点金粒,就要留住所有沙子。这里的金子就是规则和结果,大量沙子就是大数据。

数据分析的步骤类似于从沙子里淘金的步骤,其步骤如下:

步骤01 采集大数据(可能有很多来源,这里要说明一下,数据必须真实可靠,否则得到的规则也将是错误的)。

步骤02 数据抽取(清洗,把对结果形成干扰的或者异常的数据剔除。比如运动员档案的数据里面出现一些名字,各项指标都是空着的,这样没意义的数据要删除)。

步骤03 在清洗完毕的数据基础上构建数据仓库(实际上就是对我们感兴趣的维度构建一个模型,比如你要考察的是足球运动员,可能关注身高、体重、坐高、下肢长、小腿长,而对长得帅不帅、哪里人不感兴趣),模型建好之后,最后一步运用数据挖掘算法进行计算得到结论,这就是大数据处理的传统领域——数据分析,也叫作商业智能。

上面讲到的两个案例都是实时性要求不高,不要求马上得到结果。如果希望快速得到结果,比如几秒钟得到处理结果,这就是大数据处理的另一个领域,即云计算。本书不详细讲解云计算,此处仅仅举个小例子,以帮助读者理解云计算的概念。

1.3.2 基于云平台的分布式处理

介绍云计算之前,首先思考一个小问题,先不考虑会不会写代码,只要有想法即可。

问题: 给出一篇文档,让你从中找出出现的单词以及这些单词出现的次数。

想想解题思路是怎样的?

解题思路其实很简单,就是从头到尾读取文档,碰到单词记录下来,同时记录它出现的次数,如果之前出现过,计数就加1。具体可参考如图1-3所示的代码,有学过Java的读者可以参照这个代码实现方法理解其思路。

图1-3

理清了思路,再思考一个问题,如果读取一个100GB的文档,使用原来的算法还能处理吗?还能在合理的时间内给出答案吗?我们知道从硬盘读取文件到内存是通过IO流进行的,而计算的大量时间耗费都在IO上了。由于读取的数据体量很大,所以无论你对WordCount算法本身如何调整和优化,数据处理的效率依然会很低。那么应该如何快速处理呢?

有两种解决方法:一是找一台运算性能非常高的服务器,存储和运算能力都很惊人,但造价同样惊人。SAP公司内存数据库产品HANA,直接将所有数据存储到内存,全部数据存储和运算在内存中进行。但造价非常昂贵。国内有几家公司在使用这样的产品,比如农夫山泉。但并不是所有企业都负担得起。

另一个方法就是把一些廉价的服务器形成集群,每个服务器都需要承担一定运算任务,合作完成。就这个例子而言,可以用100台普通计算机,每台计算1GB的数据,最后统计出来的结果合并在一起就可以了。这个方法既节省成本,而且速度又快,因为服务器之间是并行运算的。这种技术早期叫网格计算,后来叫分布式计算,其实本质上就是如今的云计算。

上面这个思想需要解决两个问题:一是分布式存储,大数据分别存储到不同机器,而对使用者感觉好像是一台机器;二是分布式计算问题,每台机器都需要分配一个任务执行运算,所有任务同时进行,最后还需要对各个节点的运算结果进行合并得到结果。能够解决这两个问题流行的云计算框架就是Apache的Hadoop项目,里面包含好多的子项目和模块。Hadoop官方网站页面如图1-4所示。

图1-4

Hadoop核心就是解决分布式存储的HDFS和解决分布式计算的MapReduce。另外,它还有一些其他模块,也会涉及一些其他领域的技术,结合起来解决云计算问题。这些技术就像自然界的生态系统一样也构成了Hadoop生态圈,如图1-5所示。

图1-5

Hadoop目前使用现状:Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop在开发工具、开源软件、商业化工具和技术服务。大型企业,如Oracle、IBM、Microsoft、Intel、Cisco都明显增加了Hadoop方面的投入。

淘宝从2009年开始,用于对海量数据的离线处理,例如对日志的分析、交易记录的分析等。规模从当初的3~400台节点,增加到现在的一个集群有3000个节点。淘宝现在已经有2~3个这样的集群。在支付宝的集群规模也有700台节点,使用HBase对用户的消费记录可以实现毫秒级查询。

随着以博客、社交网络、基于位置的服务LBS为代表的新型信息发布方式的不断涌现,以及云计算、物联网等技术的兴起,数据正以前所未有的速度在不断地增长和累积,大数据时代已经到来。学术界、工业界甚至于政府机构都已经开始密切关注大数据问题,并对其产生浓厚的兴趣。就学术界而言, Nature 早在2008年就推出了 BigData 专刊。计算社区联盟(Computing Community Consortium)在2008年发表了报告“Big Data Computing:Creating revolutionary breakthroughs in commernce,science,and society”,阐述了在数据驱动的研究背景下,解决大数据问题所需的技术以及面临的一些挑战。 Science 期刊在2011年2月推出专刊 Dealing with Data ,主要围绕着科学研究中大数据问题展开讨论,说明大数据对于科学研究的重要性。 DYxaahB+t8hkaUU0M/ABtPNTl3+6QFzbNCfDmv4VcANWRKUhv/A/UipZMj2rrL+I

点击中间区域
呼出菜单
上一章
目录
下一章
×