Twitter发布Storm-Hadoop混合系统

Twitter 推出一个开源系统,旨在减低批处理和流式处理之间的交换,做法是把二者组合在一起成为一个混合系统。Twitter 用Hadoop做批处理,用Storm做流式处理,混合系统名为Summingbird。Summingbird没法做每一件事,不过对完成其目标任务还是很方便的。

Twitter 博客发文公布了Summingbird,公布细节的技术成分很大。但是,如果你想想Twitter 如何运行的,本质问题是很容易理解的。像Trending Topics(话题趋势)和搜索一类的服务需要实时数据处理才会有用。但是最终还是需要准确性或许还要做一些深度分析。Storm有点像医院里的治疗类选科,而Hadoop则是长期患者护理。

以下是Summingbird项目Wiki的描述,在高层次上解释了Summingbird如何运作,解释得不错,具体实现当然会稍微复杂一点:

Summingbird的混合模式可以让 Hadoop处理大多数的数据,并且可以从Manhattan一类的只读存储得到服务。Storm 则只处理那些Hadoop没有处理过的数据,那些限于延迟窗里的数据。这些实时数据来自数据存储。实时层的误差是有限度的,原因是Hadoop 最后会对原来的同一数据进行处理,因而会理顺引进的误差。

此类混合系统实际上越来越常见,很多公司认识到他们没办法单靠Hadoop在实时世界生存。我们以前报道过不少公司——其中有Gravity,LinkedIn和Netflix——他们也做过类似的东西。Summingbird也许有点不太一样,原因是Summingbird要处理的数据同时来自Hadoop和Storm,和管道式地处理几个不同的系统不一样。但是网络公司却需要方法保证不会用速度来换取准确度,或反之。

我们没找到Twitter 的人来特别讨论Summingbird,不过我们的数据阵容还是很引人注目的,也许可以深刻说明这东西为什么重要。他们来自PayPal、MailChimp和LinkedIn这些地方,也有的是来自像Yahoo和NSA这样的地方的企业家。

再多讲一点点Summingbird。Twitter 实际上将其描述为“Streaming MapReduce”,原因是Summingbird的重点是作业聚合。网上有Twitter 的Sam Ritchie六月做的一个演讲稿,大家可以看看。Yahoo的开源项目 Storm-YARN其实是在Hadoop群里面运行Storm,可以让Storm访问基于Hadoop的数据存储,也值得看看。