Facebook 面临的若干开放性数据问题

  • 张天雷

2014 年 11 月 14 日

话题:数据库Facebook大数据语言 & 开发架构AI

最近,Facebook 在位于美国加利福尼亚州门洛帕克市的总部召开了一场主要由数据厂商参加的峰会。会议主要针对目前 Facebook 在数据存储和访问方面所遇到的开放性挑战进行讨论。讨论的话题主要包含了小数据、大数据和新型硬件三个方面。在会议过程中, Facebook 的研究人员分别对三个方面的现状和问题进行了分析,并邀请参会人员对可能的解决方案进行讨论。

关于小数据方面,Nathan Bronson 首先对 Facebook 所采用的小数据架构进行了介绍。小数据主要是指像 OLTP 这样的查询所引起的小容量数据处理和请求任务。一般,这种任务所牵扯的数据量比较小,但是任务量比较大。以 Facebook 的 News Feed 为例,它只需要大约一千个对象进行渲染。然而, Facebook 的用户数量已经超过 20 亿。如果每个用户都发出这样的请求,总的请求量将会十分巨大。目前,Facebook 社交图谱的存储系统TAO每秒钟要处理数十亿个请求、满足对数十 PB 数据的访问。为了满足这些要求,TAO 和 Memcache 采用了通用的缓存机制。但是,缓存也同时带来了一些问题。

Nathan Bronson 抛出小数据存储相关的三个开放性挑战,并在大会上进行了讨论。第一是有关支持移动设备的问题。传统基于稳定网络连接而设计的系统并不能很好的服务于移动设备。采用预取和数据推送能够提高用户的使用感受,但是如何提高这部分工作的有效性和保护隐私数据的安全性是一个十分具有挑战性的问题。参会人员主要针对利用在一种可分析格式下对隐私规则进行关联分析展开了讨论,详细分析了各种可能出现问题的极端情况。其次是如何减少数据的复制操作。Facebook 所推出的应用以及所采用的数据架构都是基于查询操作能够迅速完成为前提的。在当今数据规模非常大的情况下,Facebook 采用本地存储和远端存储相结合的方式。在这种存储方式下,只有一部分数据存储在本地,这就导致缓存和对负信息的处理变得困难。经过大会的激烈讨论,人们认为还是应该从分析隐私规则入手,通过减少数据复制操作来应对该问题。最后,大会针对小数据方面的缓存对于可用性的影响展开讨论。Facebook 的数据中心中采用了大量的缓存来提高访问效率。但是,如何应对冷不命中和容量不命中是大规模存储方面的一个难题。与会人员激烈讨论了两种不命中的差别,并提议可以考虑用新型的非易失性存储器来解决这个难题。

在大数据方面,Facebook 的三大存储系统ODSScubaHive主要面对的是数据插入速度快和数据规模庞大这两个难题。以 Scuba 为例,它存储了数以千计、大约 100TB 的表格,每秒最多要处理 100 多个请求、扫描超过 1000 亿行,并在 1 秒钟内给出结果。在这种情况下,如何进行高效取样、有效资源调度等就成为大数据存储方面的挑战。

Janet Wiener 引导人们在取样精度、计算与存储能力的平衡、数据的流水处理可靠性等方面进行了讨论。讨论的具体内容包括:

1)以 log 时间进行分布式的取样,其精度如何以及如何评估精度等;

2)采用压缩编码可以利用计算来减少存储需求,哪种压缩算法最使用以及能够动态调整压缩策略等;

3)数据存储系统不是单独工作的,它需要与操作系统、文件系统、部署软件以及其他的系统协作才能完成其功能。在这个流水线中,如果有一个失效,该如何处理以及如何改善这一流水线的可靠性等;

4)Facebook 的大容量数据采用全局分布式的存储方式。针对大规模数据的查询该如何有效进行以及如何进行有效资源调度来满足查询需要等;

5)针对事件序列的关联性和异常检测方面,如何选择有效的算法以及能够应用这些算法分析压缩过的数据等。

在最后的硬件管理方面,Facebook 一直在尝试、并已经成功部署一些新的硬件器材来提高系统服务效率。Mark Callaghan 和 Vijay Rao 描述了 Facebook 在今年所采用的新型硬件器材,并引领大家对于硬件系统和新型软件展开讨论。随着技术的发展,新的硬件不断涌现,Facebook 也一直在更新其存储系统。但是,面对各种各样的技术,哪种才最适合小数据以及大数据访问的需求以及如何提高异构存储系统的有效性仍然是十分具有挑战性的问题。在未来的硬件方面,与会人员普遍把目光投到了具有良好性能的非易失存储器方面,并得出一些有趣的结论。


感谢崔康对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

数据库Facebook大数据语言 & 开发架构AI