1. 大数据到底是个啥
只有在那崎岖的小路上不畏艰险奋勇攀登的人,才有希望达到光辉的顶点。
——马克思
在计算机和互联网技术高度发达的今天,我们所有人每天都会在互联网上产生大量的数据,例如出去旅游,用苹果手机拍照,照片备份到苹果 iCloud 里面会留下图片数据,在京东购买商品时会产生商品交易数据,使用微信进行即时通信会产生通信数据,使用网约车软件打车会产生出行数据 ……
如此可见每天互联网上产生的数据是有多庞大,数据可谓是无处不在。根据 IBM 调研的说法,人类每天生成的数据涵盖我们发送的文本、上传的照片、各类传感器数据等所有信息,相当于从地球到月球的距离。因特尔公司首席执行官 Brian Krzanich 也曾表示,到 2020 年互联网用户每天将产生 1.5GB 的数据。
那么大数据是不是就是指的数据量巨大呢?大数据到底是个啥?
百度百科里是这么定义大数据的:
大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
在维克托・迈尔 - 舍恩伯格及肯尼斯・库克耶编写的《大数据时代》 [2] 中表示,大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。
1980 年,美国著名未来学家阿尔文・托夫勒在《第三次浪潮》一书中将大数据认为是 “第三次浪潮的华彩乐章”,这是第一次提及 “大数据”。
在 2001 年,高德纳分析员道格・莱尼在一份与其 2001 年的研究相关的演讲中指出,数据增长有三个方向的挑战和机遇:量(Volume),即数据多少;速(Velocity),即资料输入、输出的速度;类(Variety),即多样性。
在莱尼的理论基础上,IBM 提出大数据的 4V 特征,得到了业界的广泛认可。大数据 4V 特征:volume(容量)、variety(种类)、velocity(速度)、value(价值)。
第一,大数据意味着超规模(Volume)。 大数据的规模从一般意义上讲具有大规模、海量的含义,但是没有绝对的量纲标准,而是和领域及其问题相关。
超规模是指超出了原有领域和问题的大规模。比如企业大数据,与之前不同的一个地方在于,此时的数据规模常常超越了企业本身传统的内部数据边界,而是延伸到了企业外部,成为一种社会化的企业数据。每个人作为终端使用者,既是数据的使用者,又是数据的创造者。
第二,大数据意味着多样性(Variety)。 富媒体(Rich Media)大大扩展了人们的数字化生活体验,全球数据和数字流量中 80% 以上 都是文本、视频、语音、图像,而不是过去以二维的、规范化的、非常简单数据形式为主的结构化数据。多样性成为大数据的显著特征。
第三,我们处在数据的海洋之中,但与我们企业或个人相关的数据相对说来是很少的,所以是低价值密度的(Value)。 即,数据量的分母太大,对企业或个人决策有价值的信息占总量的比例就很小。
所以这里有一个重要的含义,即如何从低价值密度的数据海洋中挖掘出有用信息,成为企业数据分析的关键。
第四,大数据的实时性强(Velocity)。 信息就像开着的水龙头一样,源源不断地出来。人们打开手机看新闻,支付账单,都需要得到及时响应,而不是等到晚上再看新闻,要排个队才能支付账单。
数据是连续的,实时的,流涌的。这种流数据是时时刻刻(Real-Time)的,构成了大数据之 “大” 和无时不在。
莎士比亚说过:一千个人心中,有一千个哈姆雷特。每个对大数据理解的角度不尽相同。作为一名互联大数据技术人员,我对大数据的理解是这样的。
3.1 大数据必须的是体量巨大的数据,而不是单个的我们生活中感知的 “大文件”。偶尔会听到有人会将某一部高清的 4K 电影,称之为大数据。要知道对应我们普通的电脑来说一部几十 G 数据量已经很大了,但是对于整个社会每天产生的 PB、EB、ZB 来说,真的是冰山一角。
那么什么样体量的数据,能称之为大数据呢,以我所在的互联网生活服务超级平台举例,用户每天在 App 上浏览、点击、购买、平台行为产生的数据量在几十 PB 级别。
关于大数据规模门槛我给出一个简单的判断标准:每天产生数据低于 TB 级别的数据都不能称之为大数据。
3.2 大数据指的是有价值的数据。一些不正规的互联网媒体为了骗取互联网广告主的广告推广费用,会自己购买服务器,部署刷量程序。这些机器上的程序日夜不停地点击媒体上广告主投放的广告,在点击过程中会产生大量的曝光数据。数据量也能达到惊人的 PB 级别,但是这些数据背后对应的是一个个没有生命的 “程序”。
这些 “程序” 除了点击广告之外,也不会产生有价值的行为。所以这些数据是没有价值的,也就不能称之为大数据。
关于大数据价值判断标准:大数据背后需要对应一个个鲜活的个体,这些个体必须是能产生其他社会价值的。个体的标准不仅限于人,但多数情况下等于人。
3.3 大数据具有严格的时效性。 尽管比较久远的也能反映数据背后个体的历史行为。但数据和个体对应关系会时刻发生变化。历史行为到当前是否能来准确描述个体的行为我们是无从判断的。
例如:一名大学生在上学的时候主要经济来源是父母,他的经济购买能力是比较有限的。几年之后参加工作,自己有了稳定的收入以后,购买能力就会大大增强,此时再根据他历史数据,去给他推送商品时候,这个人成功购买的概率就会很低。
所以说大数据随时间的推移,时效性下降之后,数据价值极具下降。关于大数据时效性判断标准:大数据从数据产生开始,数据价值在几个月的时间里会持续下跌,直到没有任何价值。
这一节我们重点讨论了大数据的定义,通过引用了百度百科、托夫勒、莱尼等多方观点阐述,并结合我个人的理解总结了大数据的特点。
2.我们是如何走入大数据时代的
散步促进我的思想。我的身体必须不断运动,脑筋才会开动起来。
—— 卢梭
上一小节我们一起学习了大数据的定义和特点,这一小节我先带着大家一起穿越到人类文明发展的起源,再顺着历史发展的脉络,回答这样一个问题:我们是如何走入大数据时代的。
翻开人类光辉璀璨的历史,科学进步的发展,推动了社会进步,也深刻改变了人们生活的状态。
石器时代:人类使用石器捕杀猎物,分割食物,建立最初的文明。从猿人经过漫长的历史、逐步进化为现代人。
青铜时代:人类利用金属的第一个时代。各地区的青铜时代开始时期不一。希腊、埃及始于公元前 3000 年以前,中国始于公元前 1800 年。青铜是铜和锡的合金。
铁器时代:约始于公元前 1400 年人类开始锻造铁器制造工具,促进了社会生产力的发展。
蒸汽时代: 起于 19 世纪初,止于 19 世纪 70 年代的第二次工业革命。蒸汽机的发明和应用,将人类带入了蒸汽时代。
电气时代;始于十九世纪六七十年代,发电机电动机的发明使用,以及电灯电车电影放映机的相继问世标志人类社会进入电气时代。
信息时代:当进入 20 世纪 50 年代末,计算机的出现和逐步普及,把信息对整个社会的影响逐步提高到一种绝对重要的地位。信息量、信息传播的速度,信息处理的速度以及应用信息的程度等都以几何级数的方式在增长。
大数据和人工智能时代:随着通信技术的发展,人类突破了依赖物理实体的方式传播信息,使用手机打电话、收发短信、浏览微博、视频聊天、刷短视频。包涵大量人类活动的数据被记录了下来。这些数据散落在我们的手机、电脑、通信公司的服务器里面。数据总量急剧膨胀、呈现爆炸式增长。
在最很长的一段时间里面,少量数据的存储和计算可以在一台普通计算机里面完成,然而人们对于存储和计算海量数据感到非常的无力。当数据规模达到一定的量级以后,一台普通的计算机性能无法满足数据的存储、计算需求,这时候有两种方式可以扩容计算机的处理能力:垂直扩容和水平扩容。
垂直扩容就是把普通的计算机升级成 CPU 核数更多、磁盘容量更大、读写速度更快的计算机。受限于有限的硬件制造水平,高性能计算机能配置的最大 CPU 核数、最大的磁盘读写速度、最大的磁盘空间大小都有着物理极限。制造一台高性能计算机的成本往往比制造多台具有相同 CPU 核数、相同存储磁盘空间的廉价计算机要高出很多。
另一方面,水平扩容需要软件层面上支持数据的分割、计算结果的汇总,这一技术还处在空白阶段。这样的尴尬局面,持续了很多年,直到 2003 年,Google 通过发表三篇论文的方式公布 3 项革命性技术:GFS、MapReduce 和 BigTable,即所谓的 Google 三驾马车。
2003 年 10 月 19—22 日,Google 在美国纽约召开的第 19 届 ACM 操作系统原理研讨会(Symposium on Operating Systems Principles,SOSP)上,发表了论文《Google 文件系统》,系统地介绍了 Google 面向大规模数据密集型应用的、可伸缩的分布式文件系统 ——GFS。
2004 年 12 月 5 日,Google 在美国旧金山召开的第 6 届操作系统设计与实现研讨会(Operating Systems Design and Implementation,OSDI)上,发表了论文《MapReduce:超大集群的简单数据处理》,向全世界介绍了 MapReduce 系统的编程模式、实现、技巧、性能和经验。
2006 年 11 月 6—8 日,Google 在美国西雅图召开的第 7 届操作系统设计与实现研讨会上,发表了论文《BigTable:结构化数据的分布式存储系统》,分析了设计用于处理海量数据的分布式结构化数据存储系统 BigTable 的工作原理。
聊起西方文明,我们通常言必称希腊,古希腊有三大哲学家:苏格拉底、柏拉图和亚里士多德。聊起东方文明,我们言必称中国。聊起大数据我们言必称 Google。
就像古希腊的哲学家照亮了西方文明一般,Google 的 “三驾马车” 开启了大数据时代,并为我们指明了大数据的发展方向。GFS、MapReduce、BigTable 分别解决了计算机水平扩容过程中数据存储、计算、结果查询三个核心问题。有了可行的理论方案,从此人们真正开始考虑通过大量廉价计算机串在一起组成一个计算机集群,使用集群去处理大规模数据问题。
每个划时代技术的更迭,都会伴随着时代巨擘的诞生。
毕业于美国斯坦福大学的 Doug Cutting 在 1997 底开始使用 Java 开发 Lucene 开源函数库。
之后,Cutting 再接再厉,在 Lucene 的基础上将开源的思想继续深化。
2004 年,Cutting 和同为程序员出身的 Mike Cafarella 决定开发一款可以代替当时的主流搜索产品的开源搜索引擎,这个项目被命名为 Nutch。在此之前,Cutting 所在的公司 Architext(其主要产品为 Excite 搜索引擎)因没有顶住互联网经济泡沫的冲击而破产,那时的 Cutting 正处在 Freelancer 的生涯 中,所以他希望自己的项目能通过一种低开销的方式来构建网页中的大量算法。
幸运的是,Google 这时正好发布了一项研究报告,报告中介绍了两款 Google 为支持自家的搜索引擎而开发的软件平台。
这两个平台一个是 GFS(Google File System),用于存储不同设备所产生的海量数据;另一个是 MapReduce,它运行在 GFS 之上,负责分布式大规模数据。基于这两个平台,Cutting 最引人瞩目的作品 ——Hadoop 诞生了。
最开始,Cutting 开发 Hadoop 主要目的是服务于搜索引擎和网站创建的服务。为了能找到更强大的资源完善 Hadoop 的性能,他决定找一家有实力的公司加入。于 2006 年正式加入 Yahoo,在 Yahoo Cutting 带领一直上百人的队伍开发 Hadoop 项目。
到 2008 年 1 月,HADOOP 成为 Apache 顶级项目 (同年,cloudera 公司成立),迎来了它的快速发展期。Cutting 成为 Apache 开源基金会主席。
随着 Hadoop 的不断发展,越来越多的传统行业的公司想使用 Hadoop 来处理他们的数据问题。为了让 Hadoop 服务更多的行业,Cutting 跳槽到 Cloudera ,成为了这家专门做 Hadoop 商业技术支持公司的首席架构师。
Hadoop 项目的开源特性,让项目从起步阶段就进入了良性发展的快车道。大量 Top 公司使用 Hadoop 项目用于生产环境,在使用过程中不断完善 Hadoop 项目,并将这些技术贡献到 Hadoop 开源社区当中。
MapReduce 计算模型,对于开发人员来说有着较高的编写门槛,为了让更多让 SQL 技能良好,但 Java 技能较弱的分析师可以查询海量数据,Facebook 开发了 Hive 这一个 SQL to MapReduce 语言翻译器。
2008 年 Facebook 将 Hive 项目贡献给了 Apache 开源社区。Hive 的让 Hadoop 的使用门槛大幅度降低。
2009 年 UCBerkeley 的 AMP 实验室的研究人员开始研发新的计算模型以改进 MapReduce 的性能。
2012 年 10 月 15 日 Spark 0.6.0 发布,相比 MapReduce 实现更大幅度的性能改进。 Spark 更多的采用内存取代磁盘存储数据计算过程中间结果。得益于优异的计算性能,Spark 慢慢取代了 MapReduce 成为 Hadoop 项目中更流行的计算引擎。
在大数据使用场景中,除了会有对历史数据统计的场景外,还有一些场景需要实时统计数据结果。这两种场景分别需要使用批处理计算模型、流式计算模型。
在 Hadoop 项目之上,Spark 占据了批处理计算模型的主导地位,而流式计算模型呈现遍地开花的态势:Flink、Spark streaming 、Storm 多个项目竞相发展,争夺流式计算模型的主导地位。
除了上面讲到的计算引擎,众多的开源项目围绕 Hadoop 项目形成了一个完整的大数据生态系统。
3.Hadoop和大数据是什么关系
读一本好书,就是和许多高尚的人谈话。
——歌德
上一个小节,我们一起学习了大数据波澜壮阔的发展历史。可能会有些困惑,为什么大数据的发展历史过程中会有大量篇幅讲 Hadoop 的发展过程呢?Hadoop 和大数据究竟是什么样的关系?
区别于传统数据,大数据具有数据规模庞大、数据多样性、数据价值巨大、实时性高等特点,但归根到底大数据本质上还是静态的信息。
这些静态的信息,就像一座未开垦的金矿,需要人们运用各种方式去挖掘、过滤掉杂质,留下有价值的部分。这些挖掘活动包含一系列的流程和复杂的过程。
数据散落在各个角落(录音设备、录像设备、手机、电脑、通信公司基站服务器、互联网公司服务器),数据的形态既包含像短信、通讯录、通话记录等结构化的数据,也包含照片、视频、录音等非结构化数据。
数据需要通过一套通用的搜集流程,以便结构化、非结构化的数据都能被保存下来。
除了人们活动过程中自然产生数据以外,很多时候我们会通过在 App 中植入数据埋点的方式主动收集用户行为日志。
每次用户使用 App 的时候会出发这些埋点,App 会向后端服务器上报一次包含用户行为的日志。用户行为日志的量非常大,往往比人自然活动产生的数据量要大的多。
大量的日志被收集以后会按照多层次、多主题整理。日志经过清洗、加工、转化之后会被装载到一个叫数据仓库的系统里面。
数据仓库系统就像图书馆一样,将数据分门别类,以便用户使用的时候能快速的找到想要的数据。
数据在数据仓库中被分类整理好之后,会对接可视化的 BI 系统,在这些 BI 系统里面数据会以漏斗模型、曲线图、饼状图等可视化的方式展现出来。
另一方面,经过了数据仓库的初级数据加工之后,数据还可以经过深度的加工,以发掘出数据更深层次的价值。
数据深层次的加工过程,要用到大量的算法模型,最后会产生用于推荐系统的千人千面的标签数据、用于流量变现的营销数据、用于预测业务发展的分析样本数据等等。企业决策者、分析师、运营人员会参考这些数据开展工作,数据驱动着公司发展的方方面面。
在上面的过程中,数据从搜集、整理、初加工、深度加工、数据展现过程中包涵了大量的数据计算、数据算法、数据存储的过程。要从大数据中挖掘出我们想要的信息,远比我所预期的要难得多,需要整套的大数据技术做支撑。
在上一小节中我们讲到了 Google 作为大数据技术的开山鼻祖,通过发表三篇论文的方式引领了大数据技术狂潮,其实在论文发表之前 Google 公司早已经将论文上的技术方案实现,并应用到生产环境中。
论文发表之后除了 Hadoop 之外还有有许多人尝试实现论文中的方案。由于 Doug Cutting 个人超强的技术实力,并为 Hadoop 项目的持续发展做出巨大贡献,最终 Hadoop 从众多大数据技术方案中脱颖而出,成为开源大数据技术的领导者。
在 Hadoop 之后的大数据开源技术解决方案都以 Hadoop 为基础,成为了 Hadoop 生态体系中的一员。至此,本小节开头的问题有了答案:Hadoop 是一整套开源大数据技术,Hadoop 以生态系统的形式,成为工业级大数据技术的事实统一标准。
在互联网行业大家常说的一句话:阿里巴巴不断拓展人类商业的边界,Google 则不断拓展人类技术的边界。
在 2009 年,Google 开始使用新的技术取代 GFS 和 MapReduce。
自 Hadoop 兴起以来,Google 已经发布了三篇研究论文,Caffeine、Pregel、Dremel 后 Hadoop 时代的 新 “三驾马车”。
Caffeine 主要为 Google 网络搜索引擎提供支持。在本质上 Caffeine 丢弃 MapReduce 转而将索引放置在由 Google 开发的分布式数据库 BigTable 上。作为 Google 继 GFS 和 MapReduce 两项创新后的又一项创新,其在设计用来针对海量数据处理情形下的管理结构型数据方面具有巨大的优势。这种海量数据可以定义为在云计算平台中数千台普通服务器上 PB 级的数据。
Pregel 主要绘制大量网上信息之间关系的 “图形数据库”。
Dremel 是一种分析信息的方式,Dremel 可跨越数千台服务器运行,允许 “查询” 大量的数据,如 Web 文档集合或数字图书馆,甚至是数以百万计的垃圾信息的数据描述。这类似于使用结构化查询语言分析传统关系数据库,这种方式在过去几十年被广泛使用在世界各地。
如今 Google 又决心用 Apache Beam 一统天下。尽管 Hadoop 取得的成功不容置疑,但构建 Hadoop 生态圈的公司和企业显然慢了,全球很多技术都落后于 Google,而 Google 自身的技术也正在影响全球。
课程总结:这节课我们讲到了大数据处理包涵一套非常复杂的流程,Hadoop 是开源大数据技术中的绝对王者,除了 Hadoop 这一开源大数据技术之外,像 Google 公司内部有很多更先进的大数据技术。Google 公司不定期地会将这些大数据技术加入到开源中来,不断影响这全球大数据技术的发展。