云计算 频道

初识Hadoop-《Hadoop权威指南》连载

  志愿计算

  人们第一次听说Hadoop和MapReduce的时候,经常会问:“它们和SETI@home 有什么不同?”SETI,全称为Search for Extra-Terrestrial Intelligence(搜寻外星智 慧),执行着一个称为SETI@home的项目(http://setiathome.berkeley.edu)。在该项 目中,志愿者把自己计算机CPU的空闲时间贡献出来分析无线天文望远镜的数据,借此寻找外星智慧生命信号。SETI@home因拥有大量志愿者而非常出名,其他还有Great Internet Mersenne Prime Search(搜索大素数)与Folding@home项目(了解蛋白质构成及其与疾病之间的关系)。

  志愿计算项目将他们试图解决的问题分成多个块,每个块称为一个工作单元(work unit)并将它们发到世界各地的电脑上进行分析。例如,SETI@home的工作单元是约0.35 MB的无线电望远镜数据,分析这样的数据,一台普通计算机需要数小时或数天。完成分析后,结果被发送回服务器,之后客户端获得另一个工作单元。为防止欺骗,每个工作单元被送到3台不同的机器上执行,且至少收到两个相同结果才被接受。

  虽然表面上看起来,SETI@home与MapReduce比较相似(将问题分为独立的块, 然后进行并行计算),但依旧还有很多显著的差异。SETI@home问题是CPU高度密集的,比较适合在全世界成千上万的计算机上运行,[1]因为用于计算的时间会远大于工作单元数据的传输时间。志愿者贡献的是CPU周期,而非网络带宽。

  MapReduce的设计目标是服务于那些只需数分钟或数小时即可完成的作业,并且运行于内部通过高速网络连接的单一数据中心内,并且该数据中心内的计算机需要由可靠的、定制的硬件构成。相比之下,SETI@home则需要在接入互联网的不可信的计算机上长期运行,这些计算机具有不同网络带宽,且对数据本地化没有要求。

  [1] 2008年1月,SETI@home发表评论说每天使用320 000台计算机处理300 GB数据,同时他们也在做其他的一些数据计算,http://www.planetary.org/programs /projects/setiathome/setiathome_20080115。

0
相关文章