很久没有写博客了,之前主要是换工作,耽误了很多的时间,让人也变得懒散,不想花大时间来写东西。另外就是也确实没有什么自己都觉得有意思的东西拿
来写写,对一般的知识什么的,我比较倾向于往evernote上面记笔记。不过最近对于Hadoop看得比较多,对它的发展也比较关心,最近了解得越多,
也就越相信Hadoop的未来,这里写一篇文章与大家分享分享,为什么我相信Hadoop一定是分布式计算的未来。 写在前面的话: 今天听同事分享了一篇很有意思的讲座,叫做"Why Map-Reduce Is Not The Solution To Your Big-Data Problem"(为什么Map-Reduce不是你的“大数据”问题的解决方案)。同事很牛,也分享了很多非常有价值的观点,不过他预言Map- Reduce将会在5年之内消失(而且还呼吁有做存储方面的牛人来预言一下,Hdfs将在5年之内消失),这个话题如果成立的话,让我这个目前在 Hadoop工程师,感到无比的压力。这里不为了争个你死我活,只是谈谈自己的一些想法。另外由于这位同事的分享是内部进行的,这里就不透露分享中具体的 内容了,只谈谈自己的观点。 (本文需要对Hadoop有一定的基础方可理解) Hadoop为何物? 虽说Hadoop的名声很大,但是总还是有同学不太了解的,这里一笔带过一下。 1、Google分布式计算三驾马车: Hadoop的创始源头在于当年Google发布的3篇文章,被称为Google的分布式计算三驾马车(Google还有很多很牛的文章,但是在分布式 计算方面,应该这三篇的影响力最大了):http://blog.sina.com.cn/s/blog_4ed630e801000bi3.html, 链接的文章比我介绍得更清晰,当然最好还是看看原文了,这是做分布式系统、分布式计算的工程师必修课。 Google File System用来解决数据存储的问题,采用N多台廉价的电脑,使用冗余(也就是一份文件保存多份在不同的电脑之上)的方式,来取得读写速度与数据安全并存的结果。 Map-Reduce说穿了就是函数式编程,把所有的操作都分成两类,map与reduce,map用来将数据分成多份,分开处理,reduce将处理后的结果进行归并,得到最终的结果。但是在其中解决了容错性的问题。 BigTable是在分布式系统上存储结构化数据的一个解决方案,解决了巨大的Table的管理、负载均衡的问题。 Google就靠着这几样技术,在搜索引擎和广告方面取得了举世瞩目的成就。不过Google不是傻的,这三篇文章虽然都是干货,但是不是直接就可以用 的。话说Google发表了这三篇文章后,在学术界引起了轩然大波,大家对这三样东西提起了浓厚的兴趣,都想着是不是可以实现一下,以为己用。 2、Doug Cutting: Doug Cutting之前是一个非常有名的开源社区的人,创造了nutch与lucene(现在都是在Apache基金会下面的),nutch之前就实现了一个 分布式的爬虫抓取系统。等Google的三驾马车发布后,Doug Cutting一看,挖靠这么厉害的技术,于是就实现了一个DFS(distributed file system)与Map-Reduce(大牛风范啊),集成进了Nutch,作为Nutch的一个子项目存在。那时,是2004年左右。 在互联网这个领域一直有这样的说法: “如果老二无法战胜老大,那么就把老大赖以生存的东西开源吧” 当年与Google还是处在强烈竞争关系的Yahoo!于是招了Doug兄进来,把老大赖以生存的DFS与Map-Reduce开源了。开始了Hadoop的童年时期。差不多在2008年的时候,Hadoop才算逐渐成熟。 3、现在的Hadoop: 现在的Hadoop不仅是当年的老二Yahoo的专用产品了,从Hadoop长长的用户名单中,可以看到Facebook,可以看到Linkedin, 可以看到Amazon,可以看到EMC, eBay,Tweeter,IBM, Microsoft, Apple, HP...(后面的一些未必是完全使用)。国内的公司有淘宝、百度等等。 4、我来定义一下Hadoop: Hadoop是一套开源的、基础是Java的、目前能够让数千台普通、廉价的服务器组成一个稳定的、强大的集群,使其能够对pb级别的大数据进行存储、 计算。已经具有了强大稳定的生态系统,也具有很多使用的延伸产品。比如做查询的Pig, 做分布式命名服务的ZooKeeper, 做数据库的Hive等等。 为什么世界上只有一个Hadoop? 我的前公司是国内某一个著名互联网公司的子公司,专注做云计算,我也在这个公 司最兴盛的时候进入,当时宣传的口号是“做最好的云计算”,就是希望自己开发一套存储计算系统(就是类似于前面提到过的dfs与map-reduce), 并且克服一些Hadoop的缺点(比如说用c++去实现,克服Java的一些性能问题)。后来结局可能大家也猜到了,投入了很多钱,招了不少牛人,确实也 做出了还算不错的云计算(至少在国内是数一数二的)。但是最终不管从稳定性还是效率上还是scalable来说,都远远被Hadoop甩在了后面。虽然我 前公司这个云计算项目是否会成功,这里没办法预测,但是前途终究还是比较黯淡的。 最近一年还听说国内不少的互联网巨头都成立了云计算部 门,做“自己的”云计算,有些小得像创业时期一样的公司,都宁愿自己写一套map-reduce框架,不愿意直接使用Hadoop。可能这个跟国人的想 法,武功秘笈一定要自己藏着,不让别人学,传男不传女。对别人白给你的东西,非常不放心,觉得大家都能学到的东西,肯定竞争力是不够的。 除开心态问题不谈,但从技术实力上来说,一般国内公司的核心开发团队的能力和当年的Yahoo!比,还是有非常大的差距的,至少像是Doug兄这样的大牛是很罕见的,从开发者的实力来说,就差了不止一个档次。 其次从积累来说,Hadoop从初创到现在也经过了至少7年的积累的,碰到过很多刁钻客户的问题都慢慢克服了(比如Facebook的超大数据存储), 带给用户的经验教训是很充足的,比如说性能调优这一块,就有非常多的文章去介绍。而自己开发一个,什么都需要从头再来。 最后也是最重要 的是,Hadoop形成了一个强大稳定的生态系统,里面有生产者(共享改进的代码、fix bug),也有消费者(使用项目并且反馈经验),Hadoop的用户也可以获得较大的经济利益(不花钱买软件,还可以增加效率)。对于一个开源社区来说, 构建出一个完整的生态系统是非常非常的困难,一旦构造出来了,项目就会很稳定的往前去进步。 |