若泽-大数据全栈训练营高级班第11期

145 阅读6分钟

[Download:百度网盘](pan.baidu.com/s/1d4oYRXiy… )

提取码:45on

要说大数据的真正起源,必须得提到数据库。无论是移动互联网还是PC因特网,或者是计算机本身,背后都是一群又一群程序员写的程序,而一切程序说到底都还是对数据的处理。如果把数据处理比作一个王国的话,那这个王国的国王就是数据库。

那什么是数据库呢?用最简单的话来说,就是一个用户可以把数据存储在数据库,需要的时候,用户可以告诉数据库,我需要某些数据,然后数据库会自行完成实际的数据处理过程,返回数据给用户。数据库帮程序员把底层复杂的数据处理过程给屏蔽了,程序员只需要关心数据存储和查询就好。

数据库与正常的商业软件一样,第一个吃螃蟹的“前浪”最终倒在了沙滩上。那个时候,关系型模型还被认为是“不靠谱的”,最流行的模型是层次模型和网状模型。经历过激烈的市场竞争和工程实践,大家最后发现关系型模型才是适用于大部分环境的数据库模型。

一旦某一个基础软件确立了其垄断地位,然后再围绕其构建庞大的生态系统,那么后来者即使做出了相似的产品,垄断软件的生态系统一样会扼杀掉后来者,除非另辟赛道或者是先行者解决不了某类问题。数据库也是如此,Oracle、DB2等数据库占据了金融、电信等传统企业的大部分份额便可说明这个情况。

回到数据库本身,第一款真正意义上的关系型数据库应该是 IBM 研究院的 SystemR。研究院出来的东西大多都比较“曲高和寡”,没有考虑到大多数人的实际使用感受,比如System R使用的查询语言更像是数学家的玩物,而不是工程师的杰作,普通人很难学习,但是不可否认的是,这确实是第一款数据库,相比于之前的状况要好的太多,毕竟只要学会查询语言的语法,就能处理数据了。

v2-e3308bed92f96d18d9db6ebe1c4ef6b8_r.jpg System R就像“前浪”,帮大家把路躺平了,证明了关系型模型优于其它的数据库模型,并且在商业上更优异。于是大家一窝蜂而上,Oracle、DB2等等随之登场,各领风骚。由此催生出一门伟大的语言——SQL 。在某种程度上,SQL 才是数据领域内的“唯一”的统一语言。SQL 区别于其它语言的一个很重要的特点是它是“声明式”的语言。简单来说,所谓声明式就是使用者只需要告诉计算机他想做什么,剩下的都交给计算机实现。与声明式对应的是命令式语言,命令式语言会告诉计算机它应该按什么步骤实现什么,计算机亦步亦趋即可。大部分编程语言,比如 Java、Python 这些编程语言都是命令式的语言。相比于声明式语言,命令式语言的学习难度更大、更陡峭,这也意味着使用人数很难扩大。因此大家会更喜欢声明式语言。

数据库作为基础软件,在证明了其能力后,配合 SQL 迎来了它的辉煌时代。那个时候,无论是什么公司,只要你使用信息技术提供商业服务,那就离不开数据库。因为一切应用程序的本质都是在处理数据。

Hadoop诞生 互联网与物联网的发展,给数据库带来的最大挑战就是数据量:越来越多的数据,多到单机已经无法存储和处理,无论单机的性能有多么强悍,庞大的数据总会吞噬掉其剩余性能。在某种程度上来说,在大数据技术诞生之前,越来越多的数据都是垃圾,因为大部分数据无法处理。

第一个解决这问题的公司,是Google在2003年发表了三篇技术论文,这三篇论文在大数据领域被戏称为“三驾马车”,分别是GFS、MapReduce 和 BigTable。GFS 解决了数据大规模存储的问题,让数据可以几乎无限的增长下去;MapReduce 解决了数据大规模计算的问题,让大规模数据处理成为可能;BigTable 解决了在线实时查询的问题,即使数据量很大,用户也能很快的查询到数据。

Google仅仅只是发表了论文,而没有开源实现。雅虎参考Google的论文弄出了Hadoop,以实际的线上业务去测试和完善Hadoop,并把 Hadoop 开源了,这可是了不得的大事,因为有了 Hadoop,企业便不再依赖于昂贵的高端的硬件机器,只需要廉价的计算机也能完成以往在高端的硬件机器上完成的事,在某种程度上,甚至更好。从此以后,企业累积的数据不再是“垃圾”,摇身一变成了金矿,企业可以持续地从数据中挖掘出有价值的东西。

平心而论,刚开源的 Hadoop 不仅仅安装部署麻烦,而且使用起来也非常困难。比如用户仅仅想要统计整个文件的数量,还要为此专门写一堆 Map 和 Reduce 函数和代码。然而这些都不重要,重要的是Hadoop解决了一个非常重要的问题,重要到使用体验不佳这些都变成了小问题。

Hadoop的成功 在某种程度上,Hadoop 已经成为了大数据领域里的事实标准。现在回过头来看,Hadoop 为什么最终会成功呢?

首先应该是时机出现的好,Hadoop 出现的时候,企业面临着空有庞大的数据却无法处理的问题被Hadoop 以一种简单粗暴的方式解决了。 其次是开源,因为 Hadoop 是开源的,所以使用 Hadoop 的公司不用担心这项技术会被其它公司卡脖子,并且开源社区的帮助,使得Hadoop从一个粗糙的玩具变成一个商业可用的产品。 最后是商业价值,Hadoop 可以帮助企业分析和处理庞大的数据,并且从中获得了巨大的商业利润。 最终这三个因素帮助 Hadoop 构建了“生产-市场-研发”的正向循环。Hadoop 能产生巨大的商业价值,促使企业投入精力不断地改进它,Hadoop 的易用性、可靠性和性能也不断地提高,然后 Hadoop 占据的市场份额进一步提高,Hadoop 就成功了。

在 Hadoop 成功后,也构建了一套属于自己的周边的技术生态、用户生态和商业生态,形成了强大的“护城河”体系。