友情序言
获悉Spark最近要出书了,突然有很多感慨,心想不如写点东西出来,算是友情支持,也算是个人总结。观点尽量中立,内容尽量煽情。
本着牛哥“站在巨人的肩膀上”的理论,在捧Spark之前,要先捧一下她的前辈们。大数据系统中最核心的莫过于分布式处理框架,因为框架负责job执行的方方面面,如job分解、task调度与执行、错误容忍、数据流等等。较早(04年发表)也是最重要的贡献是Google的MapReduce框架,她将函数式编程思想引入到分布式数据处理中,仅仅用两个函数(map和reduce)就解决了一大类的大数据批处理问题,用户也再也不用担心分布式带来的诸多系统层面问题。MapReduce缺点也很明显:处理流程过于固定,不支持迭代,job执行时间一般较长。MapReduce的开源实现Hadoop在08年的时候赢得了TeraSort冠军,开始占领市场,到今天,整个生态圈已经庞大到有些臃肿。微软在沉寂了几年后,08年推出了与MapReduce直接竞争的Dryad,以DAG型的数据流取代了MapReduce固定的数据流,更复杂但功能更强。次年的DryadLINQ将更多的函数式思想(其实很多来源于C#的LINQ)引入到分布式编程范型中,到今天看来也非常先进。好了,该Spark登场了,Spark最大的贡献在于她的数据模型RDD,以前的框架都把数据当成原始的KV键值对,整个处理流程中不同阶段的数据没有明确关系。RDD给出了明确的数据逻辑关系,建立了数据依赖及数据模型,最后也能方面地将数据模型转化为具体的处理任务。Spark的编程范型其实借鉴了DryadLINQ的范型。至于内存cache、迭代计算等特性,其实把MapReduce或Dryad的实现机制改动一下也可以做到。当然这些特性对减低job执行时间很重要,也是Spark的卖点。对了,EPFL的Scala语言也功不可没,名字上就很scalable。她的关键词是学院派、函数式、静态类型、面向对象、Java兼容。多数人认为Scala是Java的接班人。如果将Spark比作孙悟空,Scala就是他的金箍棒。
学术喷完了,喷一下出书的问题。不得不说,当一个东西写成书的时候,是这个东西成熟的时候,也意味着在学术上已经out了。《Hadoop: The Definitive Guide》09年出版,是Hadoop炙手可热的时候,大多数人(也包括我自己)都是从这本书开始入门的。11年的《Programming Pig》也不错,12年的《Programming Hive》也可以,这些书都是在系统还没有到1.0版本的时候出的,佩服O’Reilly的速度。这本书也是在Spark还在0.7版本(可能出版的时候已经0.8/0.9)的时候出的,全书应该2-300页,用法介绍应该会多些,不过对广大用户应该够用了。O’Reilly书的特点就是新但不深入,对于想要了解内部运行机制的人来说,还是阅读代码吧。J
再谈一下Berkeley这些Geek们,他们继承了Bill Joy的光芒,一定要做前沿、实用、solid的工作,这也是为什么他们的论文题目总是“SystemName: A system for ***”。从底层Tachyon到框架Spark,到资源管理Mesos,再到上层Shark/MLBase/Bagel/Streaming等等,都是很系统的工作。对他们真是又爱又恨,爱的是系统都开源,可以学习到先进技术;恨的是他们把idea都想完做完了,J
最早关注Matei是他为Hadoop做的各种调度器:LATE/Delay/Fair调度器。LATE那篇引用率很高,貌似我也贡献了一个引用。但是调度器的贡献用户一般感受不到,这显然不是Matei去Berkeley的初衷。09年Matei综合了前辈们的工作,加上头脑风暴和原型实现,在10年的HotCloud发了他的占位paper。之后的2年,不断设计、实现、优化、与互联网企业推广试用,终于在12年系统成型并夺得NSDI的best paper。Shark也类似,可见做system,不仅苦逼,还需要执着与承受力。古语云“天时地利人和”,AMPLab全占了。不过最重要的是,这些Geek们在光明的道路上一直勇敢向前,值得我们学习与效仿。这些Geek们也很nice,在邮件列表上有问必答,“知无不言,言无不尽”,很受用。Matei今年要毕业当老师了,好想知道他带学生的样子。
有幸3月份在清华见到了Shark的作者Reynold Xin,请教了不少问题,也祝贺Shark高中SIGMOD 2013。辛博士在国内的推广活动比较成功,希望多来做做报告。国内还有很多单位如Intel对Spark的贡献挺大,他们是对开源有激情、有能力的一帮人,赞一下。
不多废话了,有时间还是多想想为这个项目贡献点东西吧。
另外,强烈建议封面换为海星,不然怎么体现Spark。等到Shark出书的时候,再整成鱼而且是鲨鱼吧。
PhD Candidate @ ISCAS
Intern @ System Research Group, MSRA
2013-04-27