大数据是指数据如此之多以至于它超越了传统的数据库系统的能力,数据量太大,移动太快,也不满足(传统)数据库架构的约束。为了能从数据里面获得价值,你必须选择其他的替代方案来处理它。
大数据是2012年的热门IT流行词。大数据变的很高光可见,因为高费效比的方法已经出现了,可以驯服那些无论是量、速度还是变化性都很大的海量数据。在这些数据里存在着有价值的模式和信息,而之前因为获得他们的代价和工作量是如此之大而很难获得。对于领先的企业,比如沃尔玛或谷歌,他们已经获得了这些能力,但代价高昂。如今,随处可见的普通硬件设备、云基础架构和开源软件已经让大数据处理发展到了一个接近资源丰富的阶段。大数据处理方式是有名的灵活,即使是很小的车库创业公司也能通过租用很便宜的云端服务器来使用。
大数据能为组织带来的价值可以归为两类:分析应用和产生新产品。大数据分析可以发现藏在数据里的洞察,而以前因为花费太大而很难获得。例如,这样的洞察可以是客户间的相互影响,这可以通过分析购物者的交易记录、社会信息和地理位置信息来获得。相对于静态特性的方法,比如运行那些预先定义好的报表,能够在合理的时间里处理每一条数据就可以消除数据抽样的影响,同时也能促进探索性分析方法的使用。
过去十年里成功的互联网创业企业就是把大数据用来产生新产品和服务的绝佳例子。例如,结合用户和他们的朋友行为里的海量信号,脸书能够打造高度个性化的用户体验,同时创造一种新的广告业务模式。因此支持大数据的大牛的思想和工具出现在谷歌、雅虎、亚马逊和脸书就绝不是偶然了。
大数据在企业里的出现则带来了一个必要的补充:敏捷。成功的开采大数据里的价值需要实验和探索。不管是产生新产品还是找到能带来竞争优势的方法,这些工作都要有好奇心和创业的眼光。
大数据是什么样子?
作为一个无所不包的名词,“大数据”也相当的含糊不清,就如“云计算”覆盖了很多技术一样。大数据系统的输入可以来自社交网络上的聊天者、网站服务器日志文件、交通传感器、卫星图片、广播语音流、银行交易记录、摇滚乐的MP3文件、网页的内容、政府文件的扫描、GPS的路径、汽车的遥感器、金融市场数据,这个列表可以很长。这些都是一样的东西吗?
为了更清楚,这三个V(大数量、时效性、多样性,Volume,Velocity,Variety)常常被用来定义大数据的不同方面。他们是有用的镜片,通过他们可以观察和理解数据以及可用来挖据数据的软件平台的特性。很可能你会与这三个V的每一个都有一定程度的斗争。
大数量(Volume)
能处理海量的信息并从中得到益处是大数据分析最吸引人的地方。有更多的数据可以抵消有更好的模型:在海量数据面前,简单的数学可以非常不合理得有效。如果你能用300个因素而不是6个因素来做预测,你能不能预测的更好?
数据的大数量代表了对于传统的IT架构最直接的挑战。它需要有可扩展的存储,以及可以分布的查询。很多企业已经拥有了海量的归档数据(可能是以日志的形式存在),但没有能力来挖掘。
当数据的量已经大到这些传统的关系型数据库基础设施无法匹敌的时候,处理他们的方法选择基本上也就是两个,大规模并行处理架构(数据仓库,或如Greenplum的数据库)和基于Apache Hadoop的解决方案。如何选择也经常会不同程度上受其他的一个V—多样性—的影响。典型的是,数据仓库的方法涉及到预先定义的数据模式,适用于那些比较规律并变化较慢的数据。与之相反,Apache Hadoop对要处理的数据结构和模式没有这样的限制。
Hadoop的核心是一个为跨大量服务节点的分布式计算问题而设计的平台。它首先是由雅虎开发,并作为开源项目发布的。它实现了MapReduce算法,这个算法最初是谷歌为了建立搜索检索而开发的。Hadoop的MapReduce涉及了把数据集分布到多个服务器上,并在“map”阶段对数据进行(本地化的)运算。部分的结果在“reduce”阶段被再组合起来。
为了存储数据,Hadoop使用它自己的分布式文件系统—HDFS—把数据分布存储在多个计算节点上。一个典型的Hadoop使用场景一般涉及三个阶段:
- 把数据导入HDFS;
- MapReduce运算;
- 从HDFS里查询结果。
这个过程本质上是一个批处理过程,适合于分析和非交互的计算任务。也正因为这个,Hadoop自己并不是一个数据库或者数据仓库解决方案,而是和他们结合的一个分析助手。
广为人知的Hadoop用户之一就是脸书,它的模型就遵循上面的模式。一个MySQL数据库存储着核心的数据。数据随后被导入Hadoop进行计算,比如创建基于用户和用户的朋友兴趣的推荐。随后脸书把结果在导回MySQL数据库,让前端页面调用。
时效性(Velocity)
时效性是指数据流入的速度。时效性的重要性与大数量有类似的发展模式,最初的难题只局限于特定行业,但现在却出现在更广泛的场景下。像金融交易这样的特定企业早已经会调校他们的系统来利用快速移动的数据。现在是轮到我们了!
为什么要这样?互联网和移动时代意味着,我们使用和消费产品与服务的模式已经更多的被测量,产生的数据又流回了产品和服务的提供者。电商企业也能够收集大量的客户历史数据,不仅仅只是最后的购买行为,还包括客户的每次点击和交互。能够快速利用这些信息的企业和个人则能获得竞争优势,比如推荐给客户其他的购买选项。智能手机时代更加增加了数据产生的速度,因为消费者自己随身带着一个不断产生地理位置、图片和声音数据的数据源。
不仅仅是产生数据的速度带来的问题,例如也可以把快速流入的数据成块的存储起来留作以后处理。把输入数据转化为决策的速度是另外一个重点。IBM的一个广告里说明了这一点,如果你拿到的是五分钟前的交通快照,你是不敢过马路的。一定会有这样的时候,你不能等到一个报表运行完或是Hadoop跑完一个任务。
对于这些快速流动的数据的行业术语可以是“流数据”或“复杂事件处理”。后者出现的比较早但已经逐渐的消失了,现在流式数据处理已经越来越广泛地被认可。
使用流计算有两个主要原因。第一个是输入数据的速度太快从而没法完全都存下来。为了能保证存储的需求更实际,在数据流入的同时就必须进行一定的分析。这个问题的最极端的案例就是欧洲原子研究组织(CERN)的大型强子对撞机(Large Hadron Collider)。对撞机产生的数据太大,以至于科学家不得不丢弃其中绝大部分的数据,同时只能希望他们没有丢弃那些有用的数据。第二个原因就是应用必须要求立刻就有响应。伴随着移动应用和在线游戏的兴起,这样的场景也越来越常见。
能处理流式数据的产品目录可以分为已经商业化的产品,比如IBM的InfoSphere Streams,和那些来自互联网行业的不是很完善但依然不断涌现的开源框架,比如推特的Storms和雅虎的S4。
如前所说,不光是输入数据的速度的问题,系统输出数据的速度也很重要。反馈循环越紧密,竞争优势越明显。反馈的结果可以直接进入产品,例如脸书的推荐,或是仪表盘来帮助决策的形成。
正是互联网行业里对速度的需要才驱动了键—值存储和列式数据库,才带来了对预先计算的信息的快速检索的优化。这些数据库已经形成了一个叫NoSQL的分类,可以应对那些关系型数据库所不适用的场合。
多样性(Variety)
很难得见到数据是排列完美且可以马上处理的。大数据系统最常见的情形是数据源非常繁杂,也不会很完美地符合关系型的结构。它们或是社交网络里的文字、图像数据或是来自传感器的原始读数,但没有任何一个能马上被集成进应用里。
即便是互联网里,计算机到计算机的通信本应能带来某些格式保证。但现实的数据也是很混乱的。不同的浏览器发送不同的数据,用户的系统接收信息,然后可能用不同的版本或供应商的软件来通信。同时如果这中间的任何部分涉及到人,那肯定会有出错或不一致的情况发生。
一种常见的大数据分析场景就是从非结构化的数据中抽取出有序的内容,再交由人或者应用系统来使用。一个例子就是实体解析(Entity Resolution),即判断一个名字到底指什么东西。例如London这个词到底是说的英国首都伦敦市,还是美国德州的伦敦市。当你的业务逻辑需要知道这个的时候,你可不想猜测。
从源数据到应用可用的数据的处理过程中,经常会发生信息丢失。当你收拾整齐,就意味着你仍了东西。因此这指出了大数据的一个基本原则就是:如果可能,什么都别丢。很可能在你丢掉的数据里就存在着有用的信号。一旦你丢失了原始数据,没机会再找回来了。
尽管关系型数据库已经相当流行且原理也广为人知,这也不意味着他们应该是数据的最终归宿,即便要求的是规整的数据。特定的数据类型适用于特定的数据库类型。例如XML格式的文档就是最好是存储在专门针对XML的数据库,如MarkLogic。而社交网络本质上就是图类数据,因此用诸如Neo4J的图数据库才容易让对图类数据的运算更简单和有效。
即便数据的结构和数据库没有很大的不匹配,关系型数据库还是有缺点,即它要求有静态的数据模式。在一个敏捷的探索性环境里,计算分析的结果将会随着更多信号的发现和抽取而不断变化。准结构化的NoSQL数据库就可以应对这种灵活性的需求。他们可以提供足够的结构化来组织数据,同时也不用要求数据存储前就定义好确切的数据模式。
来到现实
上面我们探索了大数据的本质,并从高的层面上浏览了大数据的风光。但通常情况都是,当落地到部署的层面,总是有超出工具选择的其他维度需要考虑。
云还是企业内部?
大多数的大数据解决方案都有三种提供方式:只有软件,应用,以及基于云的应用。使用哪种方式取决于很多东西,包括数据要本地化否、隐私和法规的限制、人力资源是否够以及项目的需求。很多企业采用了混合的方式,即内部部署加按需申请的云上的资源。
大数据是很大的
一个基本的事实是用传统的方法无法处理的大数据也很难被传输移动。IT行业的一个渐成共识就是,应该移动计算而不是移动数据。如果你想分析美国人口普查数据,那直接在存储这些数据的亚马逊平台上利用他们的网络服务来运行你的代码就非常容易,你就不用花时间和金钱来传输这些数据了。
即便数据不那么大,也不难移动,将数据存储在本地依然有问题,尤其是在数据更新很快的场景下。金融交易系统总是试图用最快的连接链路来获取源数据,因为处理时间上毫秒级的差别就意味着竞争优势。
大数据是混乱的
混乱并不是总指基础设施。大数据从业人员一致认为他们80%的精力和时间都花费在一开始的清理数据上了。正如皮特•瓦尔登(Pete Warden)在他的大数据术语表一文中所说:“我花费在把混乱的数据清理成可用的形式比我花在其他所有数据分析工作里的时间都长。”
考虑到获取数据和清理他们的高昂花费,就很有必要考虑一下从哪里来获取数据。有很多的数据集市,他们是获得普通常见数据的地方,你也经常可以把改进后的数据交易回去。不同数据集市里,数据质量肯定会有不同,但是在竞争的环境下,数据质量将会逐步成为(好的)数据集市的基准。
文化
大数据这种现象是和数据科学的出现紧密相关的。数据科学集合了数学、计算机学以及科学的精神。为了从大数据中获益,需要投入资源来组建拥有数据科学技能的团队,需要从组织架构上为他们提供支持,创造理解使用数据能带来益处的氛围。
D.J. 帕蒂尔(D.J. Patil)在他的报告《组建数据科学团队》中定义了数据科学家所需要拥有的特性。
- 技术专家:最好的数据科学家一般都拥有某个科学专业的深度专业知识和技能。
- 好奇心:渴望能从数据表象下发现问题并萃取出一系列非常清晰的可检测的假设。
- 讲故事能力:能使用数据来讲故事,并能有效的进行沟通。
- 聪明:能从不同方向看待问题,产生创新性的解决方案。
大数据分析项目的深远的特性也带来了不令人愉快的方面。为了能被挖掘,数据必须从存仓里搬出,组织机构必须学会如何来沟通和解释分析的结果。
讲故事的技巧和聪明则是关口性的因素,能最终表明分析工作的好处是否能被机构所消化吸收。为了能有效地把分析产生的洞察用有意义的方法来传达,可视化数据的艺术性和实践能力正变的更加重要。
知道你想往哪里去
最后,需要记住的是大数据不是万能药。你可以在你的数据中发现模式和线索,但是之后会如何?IBM北美先进分析的领导者克里斯•约翰逊(Christer Johnson)给出一个开始大数据业务的建议:首先,决定你想要解决的问题。
如果你挑选一个真正的业务问题,例如如何改变广告策略来提升每用户的花费。那么这个问题将能引导你的具体实施路径。大数据的工作会从企业家精神里获益,同时它也能从一个非常具体的目标中获益。