据国外媒体报道,当前,无数网站正面临着如何高效管理海量在线数据的问题,而这一问题在5年前也同样困扰着Facebook。但是,根据Facebook技术专家杰-帕里克(Jay Parikh)的说法,人们没有必要过分担忧这些问题。
Facebook的“三棱镜”计划(腾讯科技配图)
这是因为在过去几年,许多互联网的巨型公司(包括Facebook)搭建了大量的软件平台,并通过数以万计的分布式服务器来解决在线信息爆炸的问题。此外,这些巨头们还同任何有需求的公司分享其“大数据”处理软件。
通过与雅虎合作,Facebook成为了最早涉足Hadoop技术的公司。Hadoop是一种无所不包的软件平台,可以用来处理和分析互联网海量数据。雅虎把这一开源项目当作是一种有助于建立索引的工具,从而加强其自身搜索引擎的功能。但是,之后参与进来的公司开始把Hadoop加入到自己的互联网项目中,并将其作为代码优化的必备工具。
其结果是,Hadoop演化成了一种可以处理100PB数据的平台(1PB=1024TB=1048576GB)。一直以来,帕里克专注于Facebook快速增长的软硬件基础设施建设。据他表示,“5年前,我们开始研发这些技术。当时,我们可以做的事情以及开发的速度都受到了一定的限制。此后,开源社区发生了巨大的变化,最重要的就是很多这些限制、障碍都被去除了。人们目前在互联网上可以做的事情超出了我们当时的想象。”
但是现在,Facebook正开始着手处理更为棘手的数据雪崩问题(avalanche of data),因为现在又出现了新的限制需要突破。本周,在Facebook位于门洛帕克总部举行的一次记者招待会上,帕里克披露了Facebook已经开发出两种全新软件平台的消息,并表示Hadoop可以支撑的数据规模将进一步扩大。另外,Facebook还决定将这两款软件进行开源。
第一种平台叫做“Corona(日冕)”,它可以让你在数目庞大的Hadoop服务器之间运行大量的任务,并且不用担心软件错误会导致整个服务器簇出现崩溃。不过,第二种平台更加有意义。它的名字叫做“Prism(三棱镜)”,可以让Hadoop服务器簇运行在全球范围内的多个数据中心上,其规模将更加庞大。
帕里克表示,“‘Prism’可以让我们任意转移数据,不论我们是在俄勒冈州的普赖恩维尔、北卡罗来纳州的克利夫兰,还是远在欧洲的瑞典。”
Hadoop的基本思想是基于10年前发表的两篇研究论文。论文探讨的是谷歌(微博)为了让搜索引擎更好的运行而搭建的两种大规模软件平台:GFS和MapReduce。GFS是谷歌文件系统的简称,它是一种在数以千记的服务器之间存储数据的工具,而MapReduce则可以让你将这些服务器的处理能力集中起来,从而将数据转换成更为有用的东西。Hadoop的工作方式与此几乎一样——Hadoop文件系统(简称HDFS)负责数据存储,而Hadoop MapReduce则负责数据处理。
这两种Hadoop平台已经帮助像雅虎和Facebook这样的公司成功运行了许多年,但是它们并不完美。比如说,随着Facebook用户数超过9亿人,Hadoop的缺陷也被相应放大。最为明显的是,两种平台都因存在“单点故障”的问题而被广为诟病。一旦主服务器出现问题,整个服务器簇都将随之瘫痪,尽管这一时间可能不长。
最近几月,Facebook通过AvatarNode项目排除了HDFS平台上的单点故障问题。这一开源Hadoop项目的前身是一个名叫HA NameNode的解决方案,它可以大大提高系统的可用性。但是,MapReduce上的单点故障依然存在。而现在,凭借Corona平台,Facebook彻底的解决了这一问题。
从传统意义上来讲,MapReduce使用的是单一“任务跟踪器(job tracker)”来管理服务器簇上的任务。但是,Corona却能生成多个任务跟踪器。帕里克表示,“它让我们可以在MapReduce基础架构上跟踪更多的任务。我们可以将系统的吞吐量进一步提高,从而让Facebook内部更多的开发团队和产品顺利运转。”
“在过去,一旦任务跟踪器出了问题,一切工作都需要停下来,之后你必须要重头开始才行,这使得整个业务都会受到影响。而现在,有很多迷你的任务跟踪器在进行工作,所负责的工作也是相互独立的。”
在硅谷,有一家名叫MapR的Hadoop创业型公司,托莫-希兰(Tomer Shiran)是该公司最早的一批员工。他表示,MapR公司提供了一种具有类似优化措施的Hadoop版本,但是他表示Hadoop开源版本依然不支持多个任务跟踪器。希兰曾经使用过一个版本的Corona,据他表示这一平台还可以让用户进一步加快MapReduce的工作速度。
在发布会上,Facebook的杰-帕里克就Corona给出了一些细节,但很明显在Facebook内部已经开始使用了,而且成为了不可缺少的环节。帕里克表示,Facebook运行着世界上最大的Hadoop服务器簇,存储的数据超过了100PB,每30分钟可以处理的数据超过了105TB。
然而,Facebook上增长的数据不久就会超过这些服务器簇的承载能力。9亿用户无时无刻不在发布新的状态更新、照片、视频和评论等信息。这也就是帕里克的团队创建Prism的原因,该软件可以让他们在多个数据中心之间运行一个庞大的Hadoop服务器簇。
帕里克表示,从传统意义上讲,你无法在不同的地理位置上运行Hadoop,因为网络数据包无法以足够快的速度在不同服务器上进行传输。他说,“Hadoop有一个很大的限制,即所有的服务器必须要彼此互联。这一系统属于非常紧密的耦合,如果这些服务器之间的传输延迟了几十毫秒,整个系统都会面临崩溃。”
但是,Prism会改变这一切。简单来讲,Prism会自动复制数据,并在不同地点的服务器之间传输数据。帕里克表示,“它使得我们可以在物理上将这种大规模的数据仓库分割开来,但是依然可以以一种整体的眼光来管理这一系统。我们可以将数据仓库任意移动,这取决于成本、性能或技术。我们将不再受到处理能力的限制,而在单一数据中心里经常出现这种问题。”
Prism让人想起了谷歌过去一个叫做“Spanner”的平台。Spanner的知名度并不高,谷歌一般将很多基础工作放在系统的底层进行处理。但在2009年,谷歌在一次对外的声明中却把这一平台描述成“一种存储和计算系统,可以扩展谷歌所有的数据中心,并可以按照网络限制和使用行为,自动传输和复制数据并进行计算。”这些网络限制包括带宽、丢包率、处理能力和“失效模式”。如果一个数据中心崩溃了,Spanner即可自动将数据转移到另一个地点。
谷歌曾表示,这一平台“会将谷歌所有机器上的资源自动进行分配”。在全球范围内,谷歌总共拥有36个数据中心。
帕里克承认,Prism的基本思路同谷歌的Spanner差不多,但是他也很小心的表示,他并不是很了解Spanner以及它的用途。帕里克说,和Spanner类似,在数据中心Facebook崩溃时,Prism可以立即转移数据。
MapR的托莫-希兰表示,除了谷歌或Facebook,其他公司目前还不能使用具有这种功能的软件。但是,希兰也指出,虽然目前有许多公司运行着多个服务器簇,但是他表示其实并没有这个必要。他说,“并不是所有公司都像谷歌那样,需要处理如此庞大的数据。”
Facebook目前尚未真正部署Prism,帕里克拒绝表示什么时候会开始进行。但是,他却说,在某种意义上,Facebook希望可以将这一平台进行开源,针对Corona也可能会这么做。的确,现在没有多少公司像谷歌或Facebook那样需要解决在线数据雪崩的问题,但在未来却存在这种可能性。帕里克说,“在未来,科技公司将面临严峻的数据爆炸问题。”