1. 首页
  2. SNS

Facebook崛起背后的数据英雄

  作为全球最大的社交媒体网站,Facebook每天要处理大量的数据。而Facebook的成长过程都包含了哪些数据天才的智慧呢?近日知名科技网站Wired发表文章向人们介绍了Facebook崛起背后的数据英雄。

  全文主要内容如下:

  Facebook杰伊﹒帕里克坐在加州门罗公园Facebook总部16号楼的办公室里。作为Facebook基础设施工程副总裁,帕里克的工作是负责监控Facebook的硬件和软件设施是否正常工作。帕里克的秘书每天必须做的一项工作就是访问帕里克的Facebook然后在那里留个言,如果帕里克没有即时收到Facebook的推送,就说明Facebook的网络出了什么问题,而帕里克就要负责找到问题所在并解决问题。

  不过问题是Facebook的结构太庞大了。公司的基础设备分布于全球四个数据中心,这其中包括成千上万的服务器和软件工具。要找到问题的出在哪里可真是个复杂的活儿。

  帕里克和他的团队为此搭建了一个名为Scuba的工具。这个软件平台能够帮助Facebook的工程师即时发现并分析公司数据库所存在问题。一般情况下,当你需要分析大量数据时,总是会出现时间滞差。而Scuba则不同,作为一个内存数据库,Scuba能够将数百个服务器的数据存储在高速内存系统中。这样工程师们就可以即时调取数据库中的数据

  帕里克表示,通过Scuba我们可以对公司的基础设备进行动态的监测 –
例如服务器工作状态如何,网络状态如何,不同软件系统之间如何互动等等。因此,如果我没有即时收到关于我的秘书访问我的Facebook的推送,我们就需要看看Scuba了。

  Facebook的工程师团队还包括拉斯姆森这样为公司编制图片搜索工具应用的工程师,另外还有工具条美化工程师、应用监测工程师,定制服务器、存储设备以及整个数据中心的硬件设计师等等。

  不过,随着Facebook的不断壮大,负责数据处理的工程师越来越重要。Scuba就是Facebook大数据软件平台之一。其他平台还包括分布式计算边界的推动平台、在单一一个任务中瞄准数百个甚至数千个计算机的平台等。

  拉古·穆尔蒂、Avery
Ching和乔希·麦茨勒就是负责搭建此类平台的工程师。这些工具不仅能够解决Facebook数据中心的内部问题,还能够帮助FB的数据分析师分析公司网上申请的有效性和用户的行为。谷歌的大数据平台仍是业内公认的最先进的平台,但Facebook在自己的帝国里不断扩展着自己的专业平台。与谷歌不同,Facebook更愿意与人们分享它的创造,包括程序代码等等,希望集中大家的智慧来完善公司的平台。帕里克表示,作为一家公司,FB的任务是让世界更开放,联系更紧密。我们的基础设施也承担着这样的任务。

  创立数据中心的灵感

  Facebook的数据团队是由杰夫﹒哈默巴赫尔创立的。哈默巴赫尔是扎克伯格在哈佛时的同学,在2006年加入FB之前一直在纽约的贝尔斯登私募基金工作。

  哈默巴赫尔对每个人都会说他创立FB数据中心的灵感来自于路透社数据中心的一次故障。当时他还在贝尔斯登工作,路透社的数据中心突然因为故障而关闭了。整个交易系统关闭了一个小时,因为负责管理系统的老兄出去吃午饭了。这里一个小时里,所有人都无法交易。这让哈默巴赫尔认识到数据工具的重要性。

  哈默巴赫尔认为这是一个机会。他想要建立一个从数据提取到数据模型构建完整的数据中心,然后对每个环节进行优化。而加入FB后他开始着手建设心目中的理想数据中心。

  那时FB采用的还是老式的甲骨文数据系统。此类系统并不能满足Facebook对数据处理速度的要求。哈默巴赫尔开发了名为Hadoop的系统,这种开放式软件平台最近刚刚被雅虎采用。

  Hadoop会在收集商业服务器里的数据前先对里面的数据进行搜索以便找到有用的信息。这种模式非常具有吸引力,因为商业服务器非常便宜。如果你的数据不断增加,你只需要再购买几个服务器就行了。

  哈默巴赫尔2008年秋天离开了Facebook,不过他为数据小组留下了组歌。

  Hadoop的未来

  Hadoop现在已经被Twitter、eBay和LinkedIn等普遍采用,而Facebook也正在进一步扩展它的功能。帕里克表示每个Hadoop群管理着大约4000台机器,储存了大约10万兆字节的数据。工程师拉古·穆尔蒂表示,规模实在是太大了,Facebook不得不建设四个数据中心来存放这些设备。

  为了解决这一问题,穆尔蒂和他的团队开发了名为Prism的平台。Hadoop群是由单一的名称空间管理的,而Prism则开发出多个名称空间,在同一个物理群集上创造出多个“逻辑群集”

  这些名称空间可以根据Facebook不同的小组进行划分 –
每个小组拥有自己的名称空间,但本质上它们还是共享一个数据集,而这个数据集可以覆盖数个数据中心。当工作小组需要完成某项工作时,它可以复制这项工作所需的数据并将这些数据转移到一个单独的数据中心。

  另外一个对Hadoop的创新来自于Avery
Ching。这个前雅虎员工带领他的团队构建了Corona平台。这个平台可以在不破坏数据整体性的情况下在单一Hadoop群集上运行多个任务。穆尔蒂还构建了一个名为Peregrine的工具,工程师们可以快速的访问Hadoop数据。

  除了Corona,Facebook还未向外界公开这些软件。不过按照Facebook的一贯作风,我们有理由相信公司会在将来公布这些平台。这也是工程师们喜欢Facebook的原因之一。Avery
Ching表示,在Facebook我们能比别人更先遭遇这些问题,而人们将因为我们的发现而受益。

  Hadoop是Facebook数据操作的基石,这种情况还将延续很多年。但是随着Scuba等工具的兴起,Facebook也将转投新的方向。

  Scuba是一款正在快速增长的内存数据储存工具,设计的主要目的是为了极大的提高数据信息分析的速度。这款工具是由Facebook公司的工程师团队开发的,该团队中包括一位在顶级编程网站Top
Coder上,排名第一的工程师约什·梅茨勒。Scuba在Facebook的数据中心中运行,帮助该公司收集基础设施的信息,并这些log压缩在数以百计的服务器内存中。所以,这些数据可以被即时查询到。帕瑞克表示:“这就像Excel的数据透视表一样。即使你在处理数以百万计的数据,你也可以在亚秒级的响应时间里得到结果。”

  是的,这个项目看起来似乎与Peregrine有些重叠,但就像哈梅巴赫尔指出的,这款工具是Facebook精神的一部分。Facebook的理念就是为每个问题找到最快捷的解决方案,而并非打造一个大而全的系统来处理所有问题。

  这种情况在Facebook中随处可见。Santosh
Janardhan曾就职于PayPal和YouTube,但是在他眼中,这些公司的工作与Facebook相比微不足道。Janardhan表示,Facebook让人感觉到了压力。工程师在这里希望解决更大的问题。如果你是个技术迷,那么这里就像是糖果乐园。