新工具和应用研究
在Facebook,绝大部分Hadoop集群的早期用户都是渴望追求新兴技术的工程师。为了使企业的更多人可以访问信息,我们在Hadoop上构建了一个数据仓库框架,并称为Hive。Hive的查询语言类似于SQL,支持嵌入MapReduce逻辑、表分区、抽样和处理任意序列化数据的能力。最后一个特征至关重要,因为收集到Hadoop的数据在结构上不断变化;允许用户指定自己的序列化模式,可以使我们把为数据指定结构问题转为把数据加载到Hive。此外,我们还实现了一个简单的用户界面(uer interface,UI)来构建Hive查询,名为Hipal。使用这些新的工具,市场、产品管理、销售和客户服务的非工程师都能够在几TB的数据上自己执行查询。经过几个月的内部使用后,在Apache 2.0许可下,Hive成为Hadoop的官方子系统,现在仍然在积极地开发中。
除了Hive,我们构建了分享图表和图形的门户Argus(受IBM的Many Eyes项目启发)、工作流管理系统Databee、用Python写MapReduce脚本的框架PyHive、为终端用户提供结构化数据服务的存储系统Cassandra(现在作为开源,在Apache孵化器中)。
随着这些新系统的稳定,我们最终构建了由单一Hadoop集群管理的多层模式(mliple tiers)的数据。企业中的所有数据,包括应用日志、事务数据库和Web爬虫,都以原始数据格式,定期收集到Hadoop分布式文件系统中(HFS)。夜间执行的几万个Databee进程将把一部分数据转化为结构化格式,把它放入由Hive管理的HDFS文件目录中。在Hive中执行下一步聚集操作,用来生成Argus服务报表。此外,在HDFS内,在自己的home目录下维护“沙盒”(sndboxes)的工程师可以运行原型(pototype)任务。
目前,Hadoop包含了将近25亿兆(2.5PB)的数据,而且以每天15TB的数量级增加。每天都有3000个以上的MapReduce任务在运行,处理55TB的数据。为了适应这些运行在集群上的任务的不同优先级,我们构建了作业调度器,实现在多个队列上的资源共享。除了支持内部和外部的报表、a/b测试管道和很多不同的数据密集型产品和服务,Facebook的Hadoop集群可以实现一些有趣的应用研究项目。
由数据科学家Itamar Rosenn和Cameron Marlow主持的一个纵向研究项目(lngitudinal study)用于预测长期的用户参与的最重要的因素是什么。我们使用信息平台来选择一些用户的样本,删除游离点,并对参与度的不同尺度使用一些最小角度回归技术(last-angle regression)来生成大量的特性。有些特性能够通过Hadoop生成,包含计算好友网络密度的各种尺度和基于信息特性的用户范围。
另一个探索激励新用户贡献内容的动机的内部研究,在2009年CHI会议的论文“Feed Me:Motivating Newcomer Contribution in Social Network Sites”中描述。Facebook数据组的一个更新的研究是查看信息流是如何在Facebook的社会图中流动,该研究的标题为“Gesundheit!Modeling Contagion through Facebook News Feed”,已被2009 ICWSM会议接收。
在Facebook,每天收集证据、测试假设、构建应用和使用共享的信息平台生成新的洞察。而在Facebook之外,其他公司也同时构建了类似的系统。