据国外媒体报道,Google在新型网络内容索引系统——Caffeine中,将放弃以MapReduce为基础架构的分布式计算平台。MapReduce是曾经是Google的一项重要技术,用以进行大数据量的计算。
据Google高级主管Eisar Lipkovitz表示,在Caffeine中,Google的后端索引系统将从MapReduce上移除,并向Google新建的分布式数据库平台——BigTable上进行迁移。他表示,谷歌将于下月在USENIX研讨会上提交一项新的文件讨论系统。
51CTO向您推荐:Bigtable探秘 Google分布式数据存储系统
据了解,从去年开始,Google就已经启动了代号为“Colossus”的研发计划,主要内容围绕新的分布式文件系统——Caffeine进行研发。Caffeine将创建一个新的数据库的编程模型,而这也意味着Google必须在BigTable上重建整个索引系统。
MapReduce完成历史使命
必须看到的是,在Google的直接竞争对手——Yahoo、Facebook们对MapReduce饱含热情进行研发投入的同时,Google却宣布放弃MapReduce,不得不佩服Google的勇气。
实际上,早在Caffeine建立之前,Google就建立了基于MapReduce的搜索索引系统。从本质上而言,这个索引是由序列的批处理操作组成的。它通过把对数据集的大规模操作分发给网络上的每个节点进行运算,而每个节点会周期性的把完成的工作和状态的更新报告回主计算。
Lipkovitz首先谈到了Google基于MapReduce文件索引系统处理方式。“我们必须面对一个非常庞大的数据系统,在这之前,我们需要等待8个小时的计算时间我们才能够得到计算的全结果,然后我们就会把它发布到索引系统中去。过去我们一直在不停地重复这个耗时耗力的工作。”
Lipkovitz进一步解释了Google放弃MapReduce的原因,“MapReduce仅仅是一个批处理操作方式,”Lipkovitz解释说,“一般来说你不能启动下一阶段的命令操作,直到你完成第一项操作。”
可以看到,Google之所以放弃MapReduce,是因为它并不能为谷歌提供它所想要的索引速度,特别是随着实时检索时代的到来,谷歌需要的是在几秒内刷新索引内容,而非8小时。实际上,在过去的几年里,针对MapReduce的技术讨论可谓是褒贬不一。
麻省理工学院的数据库专家Mike Stonebraker认为,MapReduce的计算方法对于实时计算来说是很不合适的,是过时的。
“MapReduce就像是游击队员而非正规军”,Lipkovitz表示,“如果你想基于Mapreduces建立分布式文件处理系统,如果你想实现更多的操作命令,那么必然会有错误发生。况且你并不能缩短处理的时间,这是Google选择放弃Mapreduces的原因。”
Caffeine的处理原理
据了解,Google从2009年8月就开始测试Caffeine。当时,Google曾表示新索引技术将是自2006年以来的重大变革。速度和综合性是新技术关注的目标。Google曾表示,新系统需与网络内容的爆炸性增长保持同步,过去两年中,博客、视频和社交媒体技术都蜂拥至网络。借助Caffeine,Google将加快索引次数的更新,对一小部分网络进行消化,而不是对整个网络重新索引并更新索引内容。
Google软件工程师卡莉·格兰姆斯(Carrie Grimes)在博客中称:“我们将把Caffeine列为未来考虑重点,不仅使之索引更多新结果,还要将之打造为适应网络消息增长的速度更快、理解力更高的搜索引擎,为用户提供相关度更高的搜索结果。”
关于“Colossus”计划
“我们需要一个新的计算框架”,Lipkovitz说,这使工程师能够在BigTable上编写代码,而该系统是基于“Colossus”建立的分布式存储平台——也被称为GFS2。“原有的基于MapReduce的文件系统,不能达到Google所需要的计算规模。”
据了解,“Colossus”是专门设计BigTable的开发计划,基于这个原因,它并不针对传统的分布式存储平台应用。换句话说,它是专为建立新的Caffeine搜索索引系统而用的,虽然它可能会在Google的其它内容所服务,但其并未跨越整个谷歌的基础设施系统。
在Google的实时搜索引擎Instant的发布上,谷歌著名的工程师Ben Gomes表示,Caffeine并未在Instant架构中,但它的确有助于帮助把数据处理实现“分布”式搜索服务。
Lipkovitz同时指出,MapReduce并非意味着消亡,在Caffeine中,仍然有基于MapReduce的批处理应用,以及全球尚有其它的基础设施。而在Caffeine的诞生之前,索引系统是谷歌最大的MapReduce的应用程序。
在Google数据中心会有大规模数据需要处理,比如被网络爬虫抓取的大量网页等。由于这些数据很多都是PB级别,导致处理工作不得不尽可能的并行化,而Google为了解决这个问题,引入了 MapReduce这个编程模型,MapReduce是源自函数式语言,主要通过"Map(映射)"和"Reduce(化简)"这两个步骤来并行处理大规模的数据集。
Map会先对由很多独立元素组成的逻辑列表中的每一个元素进行指定的操作,且原始列表不会被更改,会创建多个新的列表来保存Map的处理结果。也就意味着,Map操作是高度并行的。当Map工作完成之后,系统会先对新生成的多个列表进行清理(Shuffle)和排序,之后会这些新创建的列表 进行Reduce操作,也就是对一个列表中的元素根据Key值进行适当的合并。
通过MapReduce这么简单的编程模型,不仅能用于处理大规模数据,而且能将很多繁琐的细节隐藏起来,比如自动并行化,负载均衡和机 器宕机处理等,这样将极大地简化程序员的开发工作。MapReduce可用于包括“分布grep,分布排序,web访问日志分析,反向索引构建,文档聚 类,机器学习,基于统计的机器翻译,生成Google的整个搜索的索引“等大规模数据处理工作。Yahoo也推出MapReduce的开源版本 Hadoop,而且Hadoop在业界也已经被大规模使用。
原文链接:http://www.theregister.co.uk/2010/09/09/google_caffeine_explained/
【编辑推荐】