推荐序 2009 年的时候,Netflix 公司举办了一个叫作Netflix Prize 的推荐演算法比赛。这个比赛匿名公佈了Netflix 五十万使用者对近两万部电影的一亿个评分资料,希望参赛者能够开发出更好的推荐演算法,以加强推荐系统的品质。这个比赛的奖金有一百万美金,看似很多,但和一个更好的推荐演算法为Netflix 带来的效益相比,实则九牛一毛。
丰厚的奖金和Netflix 提供的真实资料吸引不少的参赛者,其中也包含了来自加州大学柏克莱分校(UC Berkeley)的博士生Lester Mackey。Lester 师从机器学习领域泰斗Michael Irwin Jordan,在一个AMPLab 的大数据实验室里进行博士研究。AMPLab 和大多数学术界实验室不同的地方,在于实验室内由多名教授和他们带领的学生一起合作,研究人员来自不同的领域,包含机器学习、资料库、电脑网路、分散式系统等。当时,要想加强演算法研究反覆运算的效率,需要利用多台机器的分散式建模。在尝试当时业界最流行的HadoopMapReduce 后,Lester 发现自己的时间并不是花在加强演算法效率上,而是耗费在MapReduce 的程式设计模型和低效的执行模式上。因此,他向实验室另一名进行分散式系统研究的学生Matei Zaharia 求助。
当时年纪轻轻的Matei 在业界已经小有名望。他在雅虎和Facebook 实习期间做了很多Hadoop 早期的奠基工作,包含现今Hadoop 系统内应用最广的fair scheduler 排程演算法。在和Lester 的脑力激盪中,Matei 归纳了Hadoop MR的不足,开始设计第一个版本的Spark。这个版本完全是为Lester 订制,只有几百行的程式,却让Lester 可以高效率地进行分散式机器学习建模。
Lester 所在的The Ensemble 团队最后和BellKor's Pragmatic Chaos 设计了在效率上并列第一的演算法,可惜因为晚20 分钟送出,与一百万美金奖金失之交臂。5 年后,Lester 和Matei 都变成了学术界和业界杰出的人物。Lester 成为史丹佛大学电脑系的教授,带领学生攻克一个又一个机器学习和统计的难题。Matei 成为麻省理工电脑系的教授,也是Databricks 公司的CTO。
2009 年之后的4 年里,AMPLab 以Spark 为基础展开很多不同的学术研究专案,其中包含了Shark 和GraphX,还有Spark Streaming、MLlib 等。4 年里随着Hadoop 的发展,Spark 也逐渐从一个纯学术研究专案发展到开始有业界敢尝鲜的使用者。
2013 年, 包含Matei 和我在内的Spark 核心人员共同创立Databricks 公司,立志于加强Spark 的速度发展。过去两年,Spark 的发展超越了我们所有人的想像。一年半以前Spark 还是一个连监控介面都不存在的系统,很难放进生产线部署。而一年半后的今天,它已经变成整个大数据生态圈和Apache Software Foundation 内最活跃的专案,活跃程度远远超出了曾经只能望其项背的Hadoop。
很多高科技和网际网路公司也都有了Spark 的生产作业,不少使用者直接减少在Hadoop MapReduce 上的投资,把新的专案都传输到Spark 上。
今天正好是Databricks 公司成立一年半,也是Spark 1.2 版本第一个release candidate 发佈的日期。Spark 的高速发展导致中文资讯的脱节。这本书深入浅出地介绍Spark 和Spark 上多个重要计算架构,希望它的问世可以更进一步地普及Spark,增进Spark 社区的发展。
辛湜 Reynold Xin
Berkeley, CA