大数据生态

我们最后介绍整个大数据处理平台的生态。自从 Hadoop 诞生以来,大数据的生态已经发展了 20 年了,已经形成了一个成熟的生态。

首先,Hadoop 是由很多开源的系统组成的。这些开源的系统,大家可以免费使用,还可以修改它的源代码,然后提交上去,作出自己的贡献。

其次,Hadoop 的基本思想来自谷歌公司 2003 年发表的两篇论文。这两篇论文介绍了谷歌公司内部是怎么实现它的大数据系统的。一篇是 Map Reduce,讲它用的分布式计算框架,还有一篇是 GFS,就是 Google File System,讲它用的分布式存储。这两篇论文发表了以后,全世界就知道谷歌是怎么做的了,但没有系统可以用。雅虎公司的工程师 Doug Cutting 就说我来写一个。所以,和这两篇论文对应的,Hadoop 包括两部分:一部分是 HDFS 分布式存储,一部分是 Map Reduce 分布式处理。基于 Hadoop,我们就可以建立大数据集群,可以存储和处理很大的数据。

雅虎的工程师写完软件之后,想起个名字。正好他的孩子有一个玩具大象,名字就叫 Hadoop,所以他就用这个名字给这个软件命名了。现在 Hadoop 的图标,还是这只大象。这就是 Hadoop 名字的来历。

他然后把 Hadoop 的源代码放到网上,让全世界的人用。这之后就开始滚雪球了:大家都用,然后在用的过程中,发现功能不太够,就对它进行改进,往里面加功能。因此 Hadoop 就迅速发展起来了。这就是它的历史。

最后,经过了 20 年的发展,Hadoop 的生态现在包括很多东西。

首先,最底层的是存储:Hadoop 的 Distributed File System,即 HDFS。大家看,HDFS 文件系统是在最下面的,所以它是基础,是支持上面所有的大数据系统的一个存储的基础。比如 Spark,它就会到 HDFS 里去取数据。

然后,是 Hadoop 里的 MapReduce。基于 MapReduce,只要你写出 Map 和 Reduce 函数,就可以干无数多的事。比如很多机器学习的算法都可以用 MapReduce 实现。

然后,为了使用的方便,人们基于 Hadoop 的 HDFS 和 Map Reduce,开发了各种各样的工具。其中,因为大家用 SQL 语言用得很熟,就开发了 Hive。使用 Hive 时,我们可以用 SQL 语言写我们想要的数据处理脚本,然后 Hive 自动将其转成MapReduce 操作,进行分布式执行。

此后,人们发现 Hadoop 计算的时候,读硬盘还是太慢了,就提出换做读内存,并由此开发了 Spak。Spark 的数据处理速度是 Hadoop 的 Map Reduce 的一千倍。这就是说,一个任务在 Hadoop 上用 Map Reduce 算,要一千个小时(即 40 天)的,如果用 Spark,只需要一个小时就够了。这速度的提升确实是太快了。

然后,在 Hadoop 里为 Map Reduce 任务分配CPU、内存等资源的资源管理器是 Yarn。此后,为了支持更多计算框架,比如 Spark,人们又开发了 Mesos。 YARN 是负责集群资源管理的。它会规划 Map Reduce 的任务,尽量在数据所在的机器上进行 Map,或者尽量“近”,以减少网络开销。

除了这些,人们还开发了其它各种系统,这包括:

所以这是一个完整的生态。这就是为什么前面的那些岗位要求大家掌握这么多东西。大家要能够对一整个集群进行管理,并在它的上面进行二次开发。这个集群里啥都有。我们后面会简单介绍这些系统的基本功能和使用方法。


Index