以下为文章摘要:
InfoQ在今年早些时候发布了一个演讲视频,在该视频中,Kevin Weil谈到了公司应如何使用NoSQL。Weil指出Twitter严重依赖于MySQL。然而,当MySQL在许多用途上表现的并不理想的时候Twitter使用了NoSQL解决方案。据威尔介绍,在2009年里,Twitter用户数从1月份的每天约200万人,激增至12月份的每天近5000万人。每天登陆Twitter的用户数量增长已经超过了20倍。目前Twitter每天产生的用户数据在12TB左右,而每年约产生4PB的数据。
Scribe
Twitter的系统日志在一段时间后停止记录转而进行压缩,鉴于此,Facebook开始使用Scribe来替代它。Scribe创建在Facebook开源框架上,Twitter已经发布了一些Scribe的程序以便完善它。现在Twitter使用Scribe来记录Hadoop的日志。Scribe使Twitter记录日志数据变得简单。Scribe还可以比以前记录更多的数据,现在数据日志已经分成了80个不同的类别。
Hadoop
Twitter每天都需要将更多的数据可靠的写入到一个硬盘驱动器上,然而这是不现实的,所以像Twitter这样每天都产生大量数据的机构需要把数据存储在集群之中才能满足其业务需求。Twitter使用了Cloudera的Hadoop为其分配集群。Weil指出,MySQL不能满足Twitter在大规模做需求分析时所要求的效率,为了满足需求,Twitter使用了Hadoop及自己拥有的开源项目,他们称之为FlockDB。Hadoop可以运行分析并找到在FlockBD中相似的社交图数据集合。
Pig
这种Pig脚本可以帮您找到其网站年龄在18至25岁访问者中访问量排名前五位的网页
Weil说Hadoop是通过Java语言实现的,但是Java相对复杂,这使得它很难快速的重复执行。相反,Twitter使用Pig脚本语言,这种脚本语言可以运行在Hadoop之上。
Yahoo创造了Pig脚本语言并使其快速发展,Weil表示,Pig非常易学并且容易理解。他说,你将受益于Pig的方便,并且它缩短了执行时间。
HBase
HBase是建立在Hadoop的之上的,并且具有低延时和数据可变性的设计。 Twitter的使用它来增强人们对搜索功能的需求。
FlockDB
FlockDB是一个实时的、分布式的数据库。如上所述,它的建立和开源由来自Twitter。Twitter使用它的分析社交图,它的速度非常快。
对于希望更多了解Twitter如何分析社交图的资料请点这里
Cassandra
Twitter至今仍然在尝试并使用Casandra。但对Twitter而言,Cassandra也非万能,首先在于Cassandra代码或许还存在不少问题,Twitter如果投入大量的精力来改进Cassandra和比较优化MySQL的投入来看有点得不偿失。Weil也提到Cassandra在Twitter的内部测试中曾经暴露出不少严重的问题。
Twitter拿所有的这些数据都用来做什么?
Twitter对它收集的所有数据有各种各样的用途。有些只是简单的计数问题,如计算出有多少请求它的服务,每天有多少搜索服务等等。
其他用途更为复杂。例如,不同类型用户的运行比较。Twitter的分析数据,以确定是否为移动用户,用户中谁使用了第三方客户短或“超级用户”与普通用户使用Twitter的不同。
韦伊最后指出,Twitter的其他问题包括:确定转推的话题中哪些类型是人们最感兴趣,最成功的网络需要什么样的社会效果图结构,以及如何区分不同类型的人。(李智/译)