大数据时代的发展历程是怎样的?

大数据技术的发展史:大数据的前世

我们今天经常谈论的大数据技术,其实源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,即分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统BigTable。

要知道,搜索引擎主要做两件事,一是网页抓取,二是索引建立,而在这个过程中,有大量的数据需要存储和计算。这“三驾马车”其实就是用来解决这个问题的。从介绍中也可以看出,有文件系统,有计算框架,有数据库系统。

现在听到分布式、大数据之类的词,肯定一点都不陌生。但你要知道,2004年那个时候,整个互联网还处于蒙昧时代,Google发表的论文真的让业界为之振奋,大家恍然大悟,原来还可以这么玩。

因为那时候大部分公司其实都是以单机为主,想着如何提高单机性能,找到更贵更好的服务器。Google的思路是部署一个大规模的服务器集群,将海量数据以分布式的方式存储在这个集群中,然后使用集群中的所有机器来计算数据。这样的话,谷歌其实不需要购买很多昂贵的服务器。它只需要把这些普通的机器组织在一起,就很强大了。

当时才华横溢的程序员、Lucene开源项目的创始人Doug Cutting正在开发一个开源搜索引擎Nutch。看了Google的论文,他很兴奋,然后根据论文的原理初步实现了类似GFS和MapReduce的功能。

两年后的2006年,Doug Cutting将这些与大数据相关的功能从Nutch中分离出来,然后开始了一个独立的项目,开发和维护大数据技术,这就是著名的Hadoop,主要包括Hadoop分布式文件系统HDFS和大数据计算引擎MapReduce。

当我们回顾软件开发的历史,包括我们自己的软件,你会发现有些软件在开发后被忽略了或者只被少数人使用,而这样的软件实际上占了所有开发软件的大部分。而有些软件可能会创造一个产业,每年创造数百亿美元的价值,创造数百万个就业岗位。这些软件以前是Windows,Linux,Java,现在这个列表里应该加上Hadoop的名字。

有时间的话可以简单浏览一下Hadoop的代码。这个纯Java写的软件,没有什么高深的技术难度,用的是一些基本的编程技巧。没什么好惊讶的,但是给社会带来了巨大的影响,甚至引发了一场深刻的科技革命,推动了人工智能的发展和进步。

我觉得,我们在做软件开发的时候,也可以多想想我们开发的软件的价值是什么。真正需要用软件实现价值的地方在哪里?你要关注业务,了解业务,以价值为导向,用自己的技术为公司创造真正的价值,进而实现自己的人生价值。与其整天埋头在需求规格文档里,不如做一个不用思考的代码机器人。

Hadoop发布后,雅虎很快就用上了。2007年又过了一年左右,百度和阿里巴巴也开始使用Hadoop进行大数据存储和计算。

2008年,Hadoop正式成为Apache的顶级项目,后来Doug Cutting自己也成为了Apache基金会的主席。从那时起,Hadoop已经成为软件开发领域的明星,冉冉。

同年,专注于Hadoop的商业公司Cloudera成立,Hadoop得到了进一步的商业支持。

这时候雅虎有人觉得用MapReduce编程大数据太麻烦,于是开发了Pig。Pig是一种脚本语言。使用类似SQL的语法,开发人员可以使用Pig脚本来描述要在大型数据集上执行的操作。编译后,Pig会生成MapReduce程序,然后在Hadoop上运行。

尽管编写Pig脚本比直接MapReduce编程更容易,但您仍然需要学习新的脚本语法。于是脸书又放出了蜂巢。Hive支持使用SQL语法进行大数据计算。比如可以写一个Select语句进行数据查询,然后Hive会把SQL语句转换成MapReduce计算程序。

这样,熟悉数据库的数据分析师和工程师就可以使用大数据进行数据分析和处理,没有任何门槛。Hive出现后,大大降低了Hadoop的使用难度,很快受到开发者和企业的追捧。据说2011年,脸书大数据平台上运行的90%的工作来自Hive。

随后,很多Hadoop周边产品开始出现,大数据生态圈逐渐形成,包括:Sqoop,专门从事关系数据库的数据导入导出到Hadoop平台;水槽;用于大规模日志的分布式收集、聚合和传输;MapReduce工作流调度引擎Oozie等。

在Hadoop早期,MapReduce既是执行引擎又是资源调度框架,服务器集群的资源调度管理由MapReduce自己完成。但这不利于资源重用,也让MapReduce非常臃肿。于是一个新的项目开始了,它将MapReduce执行引擎从资源调度中分离出来。这是纱线。2012,纱成为独立项目,开始运营。后来被各种大数据产品支持,成为大数据平台上最主流的资源调度系统。

也是在2012年,由UC Berkeley AMP Lab(算法、机器和人的缩写)开发的Spark开始崭露头角。当时AMP实验室的马铁博士发现使用MapReduce进行机器学习计算的性能很差,因为机器学习算法通常需要进行多次迭代,MapReduce每次执行Map和Reduce计算都需要重新启动作业,带来了很多不必要的消耗。还有一点就是MapReduce主要使用磁盘作为存储介质,而在2012中,内存已经突破了容量和成本的限制,成为数据操作过程中的主要存储介质。Spark一经推出,立即受到业界追捧,并逐渐在企业应用中取代MapReduce。

一般来说,MapReduce、Spark等计算框架所处理的业务场景都被称为批量计算,因为它们通常是将“天”内生成的数据计算一次,然后得到所需的结果,这大约需要几十分钟甚至更长的时间。因为计算出来的数据不是线上获得的实时数据,而是历史数据,所以这种计算也叫大数据离线计算。

在大数据领域,还有一类应用场景,需要对实时产生的大量数据进行计算,比如对遍布城市的监控摄像头进行人脸识别和嫌疑人追踪。这种计算被称为大数据流计算,相应的,有Storm、Flink、Spark Streaming等流计算框架来满足这种大数据应用场景。流式计算要处理的数据是实时在线生成的数据,所以这种计算也叫大数据实时计算。

在典型的大数据业务场景中,最常见的数据业务方式是使用批处理技术处理历史总数据,使用流计算处理实时新数据。像Flink这样的计算引擎可以同时支持流式计算和批处理计算。

除了大数据的批处理和流处理,NoSQL系统主要处理大规模海量数据的存储和访问,因此也被归为大数据技术。NoSQL在2011前后非常流行,涌现出HBase、Cassandra等众多优秀产品,其中HBase是从Hadoop中分离出来的基于HDFS的NoSQL系统。

回顾软件发展的历史,我们会发现功能几乎相似的软件都是在非常接近的时间出现的。比如Linux和Windows都出现在90年代初,Java开发中的各种MVC框架基本上同时出现。Android和iOS也是同时出来的。大约在2011年前,各种NoSQL数据库也是层出不穷。当时我还参与了阿里巴巴自己的NoSQL系统的开发。

事物都有自己的趋势和规律。当你在趋势中的时候,你要抓住趋势的机会,想办法脱颖而出。即使不成功,也会更好地了解时代的脉搏,获得宝贵的知识和经验。而如果潮水已经退去,此时再往这个方向走,只会产生迷茫和沮丧,对时代和自己都没有帮助。

但时代的潮汐就像沙滩上的波浪,总是一波接着一波。只要你是袖手旁观的海洋,并在这个行业,下一波浪潮很快就会到来。你需要敏感而深刻的观察,忽略那些浮躁的泡沫,抓住真正趋势的机会,努力拼搏,不论成败,无怨无悔。

说是在历史前进的逻辑中前进,在时代潮流中发展。通俗地说,就是迎风飞翔。

我上面说的基本可以归类为大数据引擎或者大数据框架。大数据处理的主要应用场景包括数据分析、数据挖掘和机器学习。数据分析主要通过使用Hive、Spark SQL等SQL引擎来完成。对于数据挖掘和机器学习,有TensorFlow、Mahout、MLlib等专门的机器学习框架,内置了主要的机器学习和数据挖掘算法。

此外,大数据应存储在分布式文件系统(HDFS)中,MapReduce和Spark作业应有序调度,执行结果可写入各种应用系统的数据库中。还需要一个大数据平台来整合所有这些大数据组件和企业应用系统。

图中所有这些框架、平台和相关算法共同构成了大数据的技术体系。我会在专栏后面一一分析,帮助你构建大数据的技术原理和应用算法的完整知识体系,让你全职从事大数据开发,然后在自己的应用开发中更好地与大数据结合,掌控自己的项目。

希望对你有帮助!~