继续:
NoSQL at Twitter (NoSQL EU 2010)
Twitter一个最大特点就是用户产生大量数据,大概是300G,不知是每秒还是每分钟,一开始使用syslog,但是不可伸缩,会丢失数据。
使用开源scribe,和facebook一样,用来处理collection data,集合数据,每个节点只知道下游写操作者,有层次,可伸缩。
使用apache Hadoop进行存储和分析数据,每天有7TB数据要保存。如果依赖硬盘80MB/S,需要24小时才能写完7TB数。使用hadoop,可以在62秒内对1TB数据排序,有分布式文件系统,基于Mapreduce算法。
twitter的跟从者的社会关系图分析也是一件复杂事情,如果使用关系数据库如MySQL的Join,那得相当长时间,使用select count(*)更是吓人,Hadoop可以将这些分布到不同机器上去并行计算。
数据分析方面,数字一直在滚动,每5分钟有一千二百万,需要计算每个用户的信誉度等等,这些Java(多线程模型)适合吗?“我只想让生活中更少些Java,而不是更多”,sigle-input two stage模型是硬性的,还有更多Java的缺点。
Hadoop已经类似Java形成一个生态系统,hadoop-lzo可以获得更快更高的压缩存储, elephant-bird pig hadoop的api
通过大数据进行快速学习方面,使用pig,pig是一个高层次语言,易于SQL,并解释了为什么使用pig。
pig可以用于:
大数据量的count计数:使用pig通过hadoop实现;
大数据关联:如何区分手机和桌面用户?什么特性用户使用最频繁?搜索建议和完善,
大数据的研究:我们可以从tweet上研究到用户什么信息?他们自己的tweet或跟从者tweet?tweet的树形结构。
PPT最后介绍了HBase等几个NoSQL数据库使用,HBase是一个基于HDFS的可变数据层,容易和MapReduce和pig相连,可以使用HBase实现人搜,将用户数据导入HBase,定期使用MapReduce读取HBase,为scala服务,见
Building Distributed Systems in Scala
他们也比较里哦啊HBase和Cassandra:其实优点决定了缺点(banq按:鲁迅有言:吸取其精华,剔除其糟粕简直是废话,因为精华和糟粕往往是纠缠在一起的,their origins reveal their strengths and weaknesses)。HBase是建立在面向批处理系统,不是为了低延迟目标建立的,Cassandra则是为了获得高性能低延迟建立的。
HBase容易实现输入 输出的批处理工作,Cassandra则不擅长;HBase在namenode中有SPOF,HBase用于数据分析,而Cassandra用于在线实时系统。
FlockDB用于实时分布式 社会关系数据存储,比如谁跟了谁?等等,不优于用户数据挖掘。
使用Cassandra保存所有tweets,可容错,有高的写通过率,twitter是一种最终一致性类型应用,具体见:Scaling Twitter with Cassandra。将Cassandran和mySQL整合,标准的读写操作用MySQL,而动态的读写用Cassandran。