Twitter数据科学家Edwin Chen最近在接受媒体采访的时候透露,Twitter内部希望尝试一种全新的大数据系统——Spark。
Spark是一个基于内存计算的开源的集群计算系统(点此下载),目的是让数据分析更加快速。Spark非常小巧玲珑,由加州伯克利大学AMP实验室的Matei为主的小团队所开发。使用的语言是Scala,项目的core部分的代码只有63个Scala文件,非常短小精悍。与Hadoop不同的是,Spark和Scala紧密集成,Scala像管理本地collective对象那样管理分布式数据集。
Edwin认为:”MapReduce或hadoop任务都是批处理,所以启动一项Hadoop任务,或等待结果返回都需要等待很长时间,这一点很难改变,因为Hadoop天生就是一个批处理系统,你无法在上面运行互动分析。不过Hadoop对于分析海量数据还是很有用的。”
Spark开发之初是为了两个能被内存计算提速的应用:互动算法(常见于机器学习中,例如Google的PR)和互动数据挖掘(Hive on Spark)。在这两个应用中,Spark的速度是Hadoop MapReduce的30倍!这是因为运行Spark系统时,服务器可以把中间数据存储在RAM内存中,而无需经常从头加载。这意味着分析结果的返回速度大大加快,足以胜任互动分析工作。(见下图)
在Spark的出生地——加州伯克利大学的AMP实验室,研究人员用Spark分析垃圾邮件过滤、自然语言处理以及交通路况预测等任务。Spark还被用来给Conviva、Klout和Quantifind等公司的数据分析服务提速。无疑,Spark处理分布式数据集的框架不仅是有效的,而且是高效的(通过简洁的Scala脚本)。Spark和Scala目前都还尚处于开发中。尽管如此,随着加入更多的关键互联网特性,它越来越从有趣的开源软件过渡为基础的web技术。