在大数据领域里,Hadoop 是谁都绕不开的话题,它基本上已经成为了事实上的标准,无论是什么企业或者是个人,闭源开始开源,都不得不兼容Hadoop生态圈,即使是谷歌也不例外。虽然谷歌作为大数据领域的鼻祖,手握 GFS 、 MapReduce 和 BigTable 三篇论文(下文称为谷歌的“三驾马车”),秒杀Hadoop生态圈,但是在做谷歌云的时候依然不得不捏着鼻子兼容 Hbase 和 HDFS 的接口。因此,这篇文章就闲聊下 Hadoop 是如何发展壮大的。
前面已经聊了谷歌的“三驾马车”,论文刚出来的时候,一众公司都想拥有谷歌那样的存储、计算和分析能力,财大气粗的公司选择了根据论文自己造轮子,没实力的只能眼巴巴的期待开源。提到这里就不得不说下 Apache 基金会的主席道格卡丁(Doug Cutting),它敲下了 Hadoop 的第一行代码。
Hadoop 源于道格卡丁的一个爬虫项目,搜索结果显示它的名字叫做Nutch,专门用于爬取网页上的内容(是不是和谷歌的需求很像),结果爬虫的数量到达一定程度时,就死活上不去了,也就是说爬虫并不会随着机器的增加,性能也会稳定的增长,是有一个瓶颈在那的。这个瓶颈阿里云开发自己的“飞天”也遇到过,应用程序的扩展卡在了 5000 台机器这个数量。从这个角度来说,讨论大数据时,不应该仅仅看程序的性能和效率,稳定运行在尽可能多的机器上也是一个很重要的标准。
后面 Nutch 项目理所应当地借鉴了 GFS 和 MapReduce 的思想,重构了整个项目,使爬虫更加稳定的运行的更多的机器上。此时,雅虎也在做搜索,他们也想有谷歌那样的存储和分析工具,就找到了道格卡丁,开始了 Hadoop 项目。
关于初期 Hadoop 项目的开发,网上没有找到靠谱的资料,因此借鉴《大数据 浪潮之巅》一书的叙述,简单复现下那段历史。
首先,不可否认的是 Hadoop 项目的增长离不开雅虎内部把很多业务都迁移到 Hadoop 上给其试错和并用实际的生产环境帮助项目成长。
在 2006 年 2 月,Hadoop 项目正式成立并开源了。两个月后,Hadoop 实现了 48 小时内给 188 台机器上的 1.8 TB 数据完成了排序。这是具有里程碑式的排序,不仅仅是证明了 Hadoop 可以倒排索引,还能完成排序,说明基于 GFS 和 MapReduce 是可以打造一款通用的计算架构的。同年 5 月,Hadoop 实现在 300 台机器上的稳定运行(嗯,我想现在大部分中小企业的 Hadoop 集群还没达到这个量级),10 月,这个集群达到了 600 台机器的规模。和当时的阿里云一样,雅虎团队为了突破 6000 台机器的极限,于 2007 年实现了 1000 台机器的稳定运行。2008 年的时候,雅虎搜索的倒排索引工作交由 Hadoop 完成,并且此时的集群到达了 2000 台到 3000 台的规模。这个时候,Hadoop 完成了它的第一阶段使命,能够在尽可能多的机器上稳定运行。
除了雅虎以外,还有 Twitter,Facebook,LinkedIn 三家公司为 Hadoop 项目做出了巨大的贡献。限于篇幅,后面再聊。
开源的 Hadoop 其实并不好用,安装、管理和维护都非常麻烦。同样在 2008 年,第一家 Hadoop 集成商 Cloudera 成立,Cloudera 推出了 CDH ,把整个 Hadoop 生态圈的产品打包出售,大大简化了 Hadoop 的安装。
到 2009年 3 月,亚马逊在云上开始提供 MapReduce 托管服务 Elastic MapReduce 。8 月份,道格卡丁离开雅虎,然后去Cloudera 担任首席架构师。
在雅虎的财政支持下,Hortonworks 于2011年6月由Baldeschwieler 及其七个同事(全部来自雅虎和Apache Hadoop PMC(项目管理委员会)成员)成立,与 Cloudera 不同的是,Hortonworks 宣布其产品全部来自开源。
2012 年的时候,雅虎的 Hadoop 集群有着 42000 个节点。同样的,这也是 Hadoop 项目逐渐进入成熟期的一年, Spark 项目大放异彩。
现在 Spark 已经取代了 Hadoop 里的 MapReduce 的地位,原先的 Hadoop 项目唯一遗留下的只有 HDFS 了,不过现在很多云存储厂商都没有再使用原生的 HDFS ,但是在云上实现了与 HDFS 一样的接口。
现在的 Hadoop 已经不再是单纯的 HDFS 和 MapReduce ,而是一种事实上的标准,其周边生态囊括了流计算、OLAP、消息系统等等,下一篇文章便聊聊其生态圈。