You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
6.5 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 074 | 雅虎:大数据领域的“活雷锋”
在谷歌崛起之前的很长一段时间里,雅虎一直是互联网行业的“老大哥”。 虽然随着互联网行业的发展,谷歌的市场影响力越来越强,雅虎的日子越来越不好过,但雅虎仍是“瘦死的骆驼比马大”。谷歌发表了“三驾马车”的论文,开启了大数据时代,雅虎作为当时互联网行业的老大,也希望能用上类似“三驾马车”的系统。
鉴于和谷歌在广告市场上的直接竞争关系,雅虎不可能从谷歌那里获得基础架构并用在自己的业务上,而且谷歌也没有要开放自身架构的意思,因此雅虎决定自己开发一套。说到这里,就不得不说说道格 · 卡丁Doug Cutting了。
当时卡丁在做一个叫作Nutch的网页爬虫项目但是这个项目开发得并不顺利主要问题是当爬虫达到一定规模后无法稳定地运行在更多的机器上。
这时谷歌文件系统和MapReduce的论文相继发表了卡丁从这些论文里面受到了启发。他认为谷歌文件系统和MapReduce可以解决Nutch项目遇到的问题于是就在Nutch上实施了谷歌文件系统和MapReduce工具果然重新实现后的Nutch很容易稳定运行在更多的机器上了。
而当时雅虎正在思考如何构建自己的基础架构,于是这个项目自然而然地进入了雅虎的视野。
2006年雅虎聘用了卡丁随后专门组建了Hadoop开发团队并投入了大量的技术人员和机器资源来支持项目的开发、调试和落地。雅虎对Hadoop项目注入的人力和物力资源支持奠定了Hadoop项目从简陋向完善发展的基础。
Hadoop团队的最高领导者是位副总裁雅虎很多核心业务部门的最高领导的等级也不过如此借此不难看出雅虎当时对Hadoop开发部门的重视程度。
不但如此为了保证Hadoop项目能够顺利落地雅虎把内部的很多数据处理业务迁移到了尚不成熟的Hadoop项目中。这种用实际业务促进项目成长的“小白鼠”精神非常有效地帮助了Hadoop向成熟产品的转变。
接下来我来讲讲Hadoop的具体发展进程。
2006年2月卡丁决定从Nutch项目里将对谷歌文件系统和MapReduce的实现分离出来并决定用他儿子的玩具命名这个项目Hadoop。两个月后Hadoop实现了第一个具有里程碑意义的计算用48小时在188台机器上完成了对1.8 TB数据的排序。
这里所说的里程碑并不是说这件事情有多伟大而仅仅是证明了基于谷歌文件系统和MapReduce实现的架构是一个相对通用的系统。这个系统除了可以用在Nutch上做爬虫应用外还可以实现数据排序。
而这个数据排序的效率到底是高是低呢现在我用C++随便写一个程序运行在一台普通电脑上为1.8 TB的数据进行排序而且这个排序绝对花不了48小时的时间。但是当时Hadoop却需要用188台机器花费48小时来完成这个排序。
这里需要说明的是,对分布式系统来说,单机效率固然重要,但能够稳定运行在多少台机器上同样重要,而且实现起来更加困难。
到2006年5月雅虎的Hadoop团队已经有了一个300台机器的集群。同年10月这个集群达到了600台机器的规模 而这基本上接近了当时Hadoop可以实现的极限。整个Hadoop团队又花了差不多大半年的时间才在2007年上半年实现了Hadoop在1000台机器上的稳定运行。这样的集群规模终于可以让Hadoop存储和处理互联网级别的数据了。
2008年Hadoop可以稳定运行了。正是这一年雅虎决定把自己搜索引擎的倒排索引的构建工作迁移到Hadoop上。因为伴随着互联网内容的增加在手工实现的系统上构建的倒排索引再也无法处理越来越多的内容。
谷歌最初发明MapReduce的目的就是为自己的搜索引擎构建倒排索引所以Hadoop一旦足够稳定雅虎必然会将自己的倒排索引构建工作迁移到Hadoop上。这个处理雅虎倒排索引构建工作的Hadoop集群规模大约在2000到3000台机器之间这也是当时最大的Hadoop集群。
2009年雅虎的很多业务都开始迁移到Hadoop上。为此雅虎部署了很多个Hadoop集群总机器规模超过两万台。
**可以说2006年到2009年是Hadoop项目发展最为关键的三年。在这三年的时间里雅虎不但从人力上和机器上给予了Hadoop大量的支持更重要的是逐渐把自己内部的很多平台都过渡到Hadoop上。** 如果没有雅虎的这些大力支持也就不会有Hadoop在2009年的成熟程度。
如果说雅虎为了发展自己的业务在Hadoop项目上投入了如此多的资源是情理之中的事情那么雅虎毫无保留地把Hadoop相关的源代码全部开源出来就必须说是扮演了一个“活雷锋”的角色了。因为雅虎无私地开源了Hadoop系统其他比如LinkedIn和Facebook等互联网公司才有可能加盟进来。
除了Hadoop的核心系统以外雅虎对Hadoop生态圈还有两个比较大的贡献ZooKeeper项目和Pig项目它们对Hadoop生态圈的发展产生了非常重要的影响。
ZooKeeper是一个分布式系统的协调服务主要用来解决分布式应用中经常遇到的一些数据管理问题。它是很多Hadoop生态圈的其他项目比如谷歌BigTable的大数据开源版HBase里面分布式协调部分的代码的基础。
Pig是第一个基于Hadoop的高级语言它的脚本被编译成一系列的MapReduce任务来执行。Pig第一次让用户摆脱了烦琐的MapReduce可以用高级语言去写任务这就像是计算机从早期的汇编语言阶段过渡到了高级语言阶段。
现在十年多的时间过去了Zookeeper作为一个基础组件不断地演进至今依然是Hadoop生态圈里最重要的一个基础组件。Pig则渐渐地被后来居上的高级语言比如Spark和Flink取代了就像是COBOL被C、C++、Java等更高级的语言取代一样。
总结来说如果当初没有雅虎对Hadoop项目的鼎力支持以及无私开源我们很难想象会有今天如此繁荣昌盛的Hadoop生态圈。尽管雅虎作为一个实体公司已经不存在了尽管我们也不知道当初雅虎为什么要如此无私地开源Hadoop但我们都应该感谢它对Hadoop多年如一日的无私奉献。