500TB——Facebook 每天收集的数据量

  • 郑柯

2012 年 8 月 27 日

话题:测试FacebookDevOps架构

InfoQ 在 2010 年的时候曾经发布过一篇新闻《Facebook 谈 Hadoop、Hive、HBase 和 A/B 测试》,时任 Facebook 的工程副总 Mike Schroepfer 曾谈到当时 Facebook 的数据量产生情况:

  • Facebook 有 4 亿用户,超过一半的用户每天登录
  • 用户花在 Facebook 上的时间,比接近它的 6 个站点所花的时间的总和还多
  • Facebook 用户每个月分享 250 亿的内容信息
  • 5000 亿单月页面浏览量

要处理这样的数据,Facebook 使用了大型的 Hadoop 集群:

  • 存储 36PB 未压缩的数据
  • 有超过 2250 台机器和 23000 个核心
  • 每个机器 32GB 内存
  • 每天处理 80-90TB 数据
  • 该集群每个月有 300-400 的用户,他们每天提交 25000 个任务

在不久前 InfoQ 主办的全球架构师峰会 ArchSummit 上,前 Facebook 数据基础设施团队主管 Ashish Thusoo 做了题为“Facebook 的海量数据架构演变过程”的演讲,深受大家关注。那么现在 Facebook 的数据量有多大呢?Gigaom 的一篇文章回答了这个问题。

文章开头指出:Facebook 现在的用户数达到 9.5 亿,这些用户的每个动作,包括点击一个通知、访问一个页面、查看一个朋友的链接等等,都会为 Facebook 产生要跟踪的数据。而这 9.5 亿用户平均每个月在 Facebook 上用去的时间超过 6.5 个小时,整个的数据量就可以想见了。

在周三,Facebook 提供了一些他们现在的统计数据:

  • 人们每天分享 25 亿个内容条目,包括状态更新、墙上的帖子、图片、视频和评论
  • 每天有 27 亿个“Like”操作
  • 人们每天上传 3 亿张照片
  • Facebook 最大的 Hadoop(HDFS)集群中,硬盘空间超过 100PB
  • Facebook 使用 Hadoop 查询语言 Hive,每 30 分钟扫描 105TB 数据
  • 数据库中的数据每天增加超过 500TB

Facebook 的基础设施副总 Jay Parkish 指出:

如果你没有利用大数据带来的好处,那么你就没有大数据,你只是有一堆数据而已。我们对一切数据都感兴趣。

Pariksh 还提到:Facebook 一直努力寻找分析和利用数据的更好方法,包括做大量的 A/B 测试,找出网站所有可能的功能变化,并确保网站实时响应用户的输入。

在前面提到的那篇 InfoQ 的新闻中,对 Facebook 的 A/B 测试方法也有所提及:

当 Facebook 计划推出他们的“Like”按钮时,他们担心会不会发生“自相蚕食”的结果——会不会因此反而减少了文字评论,而不是提升了参与度?为了验证这一点,他们运行了 A/B 测试来比较用户行为:给一组用户使用新功能 (Like 按钮),而另一个对照组则没有。他们使用了两组南美国家来进行比较:[哥伦比亚、委内瑞拉] vs [阿根廷、智利]。测试的结果是:使用 Like 按钮的时候评论增加了 4.46%,而对照组的数据则是 0.63%。这一类测试所产生的巨大的数据集正是 Facebook 使用 Hadoop 来处理数据的例子。

Schroepfer 接着给出了另一个例子来说明为什么数据驱动的 A/B 测试这么重要:Facebook 还用同样的方法测试过电子邮件提醒的两种不同的设计。 尽管大多数的人都期望更为图形化更丰富的电子邮件会产出更好的响应率,但与简单的基于文本的电子邮件对比测试时,后者却有着三倍于前者的响应率——这表明了使用数据测试观点而不是依赖直觉所带来的巨大威力。

InfoQ 的读者,如果您所在的公司也使用 A/B 测试来指导产品发布,而不是依赖直觉,欢迎您在评论中分享。

测试FacebookDevOps架构