第1章 大数据与Hadoop
1.1 什么是大数据
所谓“大数据(big data)”,首先当然是数据。“大”是形容词,是对于“数据”这个词的限定和修饰。而我们所讲的“数据(data)”,则是指对于信息的数字化记录。
客观世界无时不在产生信息,每一种物理的、化学的、生物的、思想的、行为的现象和过程都带有大量的信息。如果不加记录,这些信息就都流逝了。其中也有极少数的信息会被大自然以某种方式保存下来,例如化石,但是从数量比例上看那是可以忽略不计的。也有些信息会被人们所记忆并在一段时间内口耳相传,可是如果不加以进一步记录,也就慢慢湮没了。
文字的发明之所以重要,就是因为它提供了一种记录信息的手段。当然,单纯的记录并不解决问题,记录下来的信息还应可以回放、可以复制转录、可以长期保存,还要可以检索、可以比对。文字在一定程度上满足了这些要求:人们通过阅读在头脑中“回放”和恢复被记录成文字的信息;通过抄写和印刷加以复制;通过纸张、竹简、羊皮、石壁等物理介质解决长期保存的问题;通过顺序扫描、分册、分段、加签、索引等手段和方法解决检索的问题。
但是,从总体上看,人工的文字记载是一种效率很低的记录方法。正因为如此,人类有史以来所积聚的书籍数量也很有限。据称美国国会图书馆的藏书量为3000万册(尽管其书架总长达800公里),若按平均每册信息量1MB计算(按文字信息,不是按扫描影像),总共也才30TB的信息量。哪怕再乘上10倍,也才300TB,即0.3PB。这样的量,放在现在虽然也能算得上“大数据”,但真的也不算什么。相比之下,如今纽约股票交易所每天产生的交易数据据说有1 TB,一年下来的信息量就超过美国国会图书馆的馆藏了。至于大学的图书馆,哈佛大学的藏书量是最大的,也只有1500多万册(且不说这里面还有重复),那就是说充其量也不会超过150TB的信息量。
而且文字记载还有失真的问题。因为文字是人在其所见所闻的基础上经过头脑加工处理以后才写出来的,人的观察本已难免片面和失真,头脑的加工更有扭曲的可能,表达能力也受到种种限制,所以文字记载往往流于抽象、片面和失真。
照相术、录音技术、录像技术的出现使人类记录信息的效率和保真度都得以大幅提高。保真度高了,所记录内容的权威性也就自然提高了,所以一段两分钟的录像带很可能会压倒几十个人的书面证词。
然而早期的文字、照相、录音、录像,即使电子化了之后,也都是基于模拟技术的,这样的技术有很多缺点。首先是不便甚至不能用机器进行检索和比对,因为模拟技术所记录的是波形,这些波形必须得回放出来为人所听闻和目睹,经过大脑的加工处理才能获取其真正的内容,那就是大致等价于假定观察者当初正好处于摄像机(传感器)所在位置和角度的所见所闻。另一方面,模拟信号的复制也是个问题,因为每次复制都会引入一定程度的失真。这种失真也影响到记录的长期保存。由于物理介质都是有一定寿命的,过一段时间就得把内容翻录到另一个具体的介质上,如果每次翻录都要引入失真,那么几次翻录以后的信号质量就不行了。
所以数字技术的出现有着划时代的意义。当然,数字技术的出现和发展与计算机技术的发展有密不可分的关系。有了数字化的电子记录技术以及将模拟信号数字化的技术之后,首先在复制过程中就不再有失真的问题了,这一点本身就很重要。更重要的是,数字化的记录便于机器处理,包括检索和比对,这一点对于文字记录尤为重要。目前对于文字信息的数字化主要有两种方法:一种是重新输入,就是照着文本在键盘上再输入一遍;另一种是采用OCR (optical character recognition,光学字符识别)技术,扫描文字图像并加以识别。把文字信息数字化以后,用机器进行搜索比对就很方便了。不过,要从数字化了的一般图像和音频信号中识别非文字的内容,则仍很困难,那属于模式识别,也是现在很活跃的一个研究方向。尽管如此,有了数字化记录技术,情况毕竟还是大不一样了。就说对于图像和音频的内容识别技术的研究,要是没有数字化技术那是根本就无法开展的。
所以,前面那句话,“我们所讲的数据是指对于信息的数字化记录”,就容易理解了。光是把信息记录下来还不一定就能成为数据,必须是数字化的记录才算。
“数据”一词在英文里是data,这是个复数名词,其单数形式是datum,但是一般都只用其复数形式data,除非要特别强调所说的乃是单项数据。所以,人们在使用data这个词的时候,常常是把它看成一个集合的。正是在这个意义上,才有了“big data”即“大数据”的说法。因为data是复数,这就不是指单项数据的数值之大,而是指“data”这个集合之大,即集合中元素的数量之大。
由此可见,所谓大数据,首先就是指数量之大。但光是数量大还不足以概括“大数据”这个词的意义。有人把大数据的特征总结成三个以V字母开头的英文单词,即volume(数量)、variety(多样性)和velocity(产生的速度)。
首先是数量,这已无须多说,一般认为达到TB甚至PB的规模才能称得上是“大数据”(1PB=1024TB,1TB=1024GB,1GB=1024MB。例如:我的笔记本电脑,其硬盘容量只是300GB左右,即0.3TB)。不过,业界也并没有规定一个很具体而明确的判断标准,这是个比较模糊的概念。
然后是多样性,这很重要。所谓数据的多样性,是指来源和内容的多样性,以及结构和格式的多样性。首先是来源,人们常说“兼听则明,偏信则暗”,单一来源的数据未必真实可靠。还有就是空间跨度和时间跨度的问题。先说空间跨度,首先是地域(和人群):你的数据只是一个省的,他的数据虽然数量上不如你,却覆盖了10个省,你说谁的数据更有价值?空间跨度也不仅仅是地域的问题,同时也是领域的问题:你手里只有商品交易数据,他的数据虽然数量上不如你,却有商品交易、医疗、教育、户籍等多个方面的数据,里面或许还有一些水文资料(虽说貌似没有多大用处),你说谁的数据更有价值?再说时间跨度:你只有一年的数据,他的数据虽然数量上少一些,却覆盖了前后10年,你说谁的数据更有价值?所以多样性的问题实际上关系到数据的质量,不能脱离多样性而孤立地强调数量。另一方面,数据的多样性也带来大数据处理技术上的许多特点:因为来源不一,就不可能全都符合某种格式和结构,更多的数据可能是无格式的“非结构化”数据;因为空间跨度大,可能涉及许多不同领域,往往就无法事先设计好一种普遍适用的数据库模式。即使属于同一种性质的数据,处理时的计算方法和流程也可能会有不同,比方说在有些数据里热量以“大卡”为单位,有些却以“千焦”为单位。如此等等,不一而足。
还有数据产生的速度。如前所述,如果按文字(而不是按扫描后的影像)计算,美国国会图书馆的信息藏量满打满算也不过30 ~ 300TB。当然不能说人类有史以来的全部文字记录皆备于此,但是这个图书馆的收藏确实已经占了相当大的比例。如果按两千年的时间跨度,那么平均每年产生的文字记录不超过150GB。然而,现今光是纽约股票交易所每天产生的交易数据就可达到1 TB。这二者的产生速度,显然不可同日而语。所谓“快”,就是单位时间内的数据量可以很大。数量的大小是个相对的概念,如果现有的系统对于每天产生的数据都能轻松应付,那么哪怕绝对量再大,也不能算大。而如果数据有时候会像潮水一样涌来,换用再大的系统也觉难以应付,那就真的是大了;要是数据每天都像潮水一样涌来,那就更大了。所以,当我们说“大数据”时,也包含了产生速度有时候会很快这么一层意思。数据来得快了,对于处理、分析的实时性甚至可行性都带来了挑战。
有人在这3V特征的基础上又加了一个V,即value,意思是单项数据的价值往往不大,但是作为一个集合则价值巨大。不过这个V似乎有点牵强,价值究竟大不大要看挖掘的结果,在此之前我们只是相信它潜在的价值可能很大。
还有人又加上了另一个V,即veracity,意思是说数据的真实性,因为这些数据大多都是第一手的原始数据。但是这同样也很牵强,事实上也有人加上了另一个V,即variability,意思是说数据质量的变动很大,需要去伪存真、沙里淘金。
综上所述,我们不妨用“多、杂、快、乱”四个汉字概括大数据的特征,其中“多”是主要特征。如果数量不大,哪怕再杂、再乱、来得再快,也称不上大数据。
那么一般所谓的“大数据”都有些什么来源呢?最主要的当然是业务数据,比方说商品交易数据主要来自商店的台账或电子商务的交易记录;再如日内瓦的大型强子对撞机,据说每年能产生高达15PB的数据。其次是业务活动中产生的日志(log)信息和统计信息,这主要产生于一些运营商、大型网站等。另一个重要的来源就是纸质材料经过OCR识别或重新输入而得的数字化文字信息,如文件、合同、协议、备忘录、信件、报刊、书籍、文告、法律等。当然,互联网也是个重要的数据来源,无论是通过网页搜索爬取,还是网上下载,都能得到不少数据。不言而喻,正在方兴未艾的物联网,即传感器网络,将又是一个重要的数据来源。可以设想一下,像杭州这样一个城市,每天从各个地点和角落的摄像头能产生多少数据?还有外购,也是一种数据来源。再如社会调查,也会产生不少数据。
显然,想要列出一个完整的数据来源清单是不现实的,但是主要的也就是上述这些来源。