个人简介 英特尔大数据部门构架师。微博: @Andrew-Xia。开源软件爱好者,11年加入英特尔亚太研发有限公司,8年软件开发管理经验,曾在Palm Source, Trend Micro公司参与Linux内核和安全的开发工作。目前专注于大数据领域,是国内最早一批关注Spark大数据处理框架的开发者,现为Apache Spark project的Initial Committer, 另外也关注和参与Hadoop,Mesos,Yarn等大数据处理和调度框架的开发。
QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。
1. 欢迎大家来到QCon全球软件开发大会[上海站]2013。坐在我身边的是来自英特尔的夏俊鸾先生。夏俊鸾先生,你好!
夏俊鸾:你好。
2. 请简单的介绍一下自己?
夏俊鸾:我夏俊鸾,英文名叫Andrew Xia。我2011年加入英特尔,现在目前在英特尔的大数据处理部门。目前主要做的方向就是Spark,基于内存的大数据处理框架。
3. 我们又听到了一个大数据处理框架。听到Spark这个名字,我们可能又想为什么会有一个新的,为什么会有另一个这样的一个数据框架,因为现在市面上已经有很多成熟方案了是不是?
夏俊鸾:是的,像目前大数据处理框架应用的范围比较广可能的Map Reduce基于Hadoop之上的Map Reduce处理框架,那么Map Reduce处理框架是一个比较好的,可靠的这样一个batch的处理框架。但是呢,它并不适合于比如像迭代式的处理,或者说是像Interactive,ad-hoc query这样的一个处理,所以Spark的出现就是来解决这样两个问题,比如说Spark可以把这个在迭代处理中的这个中间的数据可以存储在内存之中,然后加快这个迭代处理的过程,然后ad-hoc query也可以把这个数据源也可以开始在内存中,使的每一次query都可以利用内存中的数据源加快query这样一个过程。
4. 那我们如果用Spark,它有什么最明显的优势呢?
夏俊鸾:最明显的优势它就是相对于Map Reduce,它提供了一些缓存的算子,也就是说中间数据可以被用户感知到,然后用户可以显示的持久化这些中间数据,以便在后续的操作中可以重复使用这些中间数据,来提高整个运算的功能,运算的这个性能。
5. 性能有多大的提高?
夏俊鸾:当然了,如果是对于batch处理的话,对于像Hadoop并不擅长的迭代式处理,那么我们可能会需要有10到100倍的这样一个性能提高,当然很多人可能我并不是需要迭代式的处理,我可能就只需要一个Map Reduce的处理,那么你跟Hadoop的性能比较又会怎么样呢?其实根据我们的这样一个实验的结果的话,由于Spark的轻量级以及在每个client(worker) node端使用的是线程池,而不是起每一个进程的话,那么它在就是处理一般的batch处理过程中也会比Hadoop性能稍稍高那么一点点,但是不是数量级的提高,所以呢,并没有迭代的那么明显。
6. 如果处理迭代,是一个非常好的场景?属于典型场景?
夏俊鸾:如果说是处理batch的场景,那也是比Map Reduce要好,只是并不是数量级的提高。
7. 那我们如果用一个计算框架,很大程度上都要就是考虑到这个整个社区是否特别成熟,然后这个产品是否成熟,然后可以是不是出了问题可以得到很多这样的帮助。那么Spark现在这个整个社区活跃吗?
夏俊鸾:Spark的整个社区,现在可以这么说,是继Hadoop之后,目前最火的大数据处理框架的社区,为什么这么说呢?首先在今年6月份,Spark已经进入了Apache的孵化器,另外在全球来说已经有超过三千人进行了一个Online的培训,在线下呢,在硅谷那边,会定期的组织一些技术的分享,在线下已经有超过1200人,这个参与到这个线下的分享,然后呢,目前有超过24家公司,包括雅虎,包括Intel,包括Microsoft超过90名Contributor来贡献Spark的feature,以及提高它的性能,其中90个Contributor里面,有23个Committer,所以我们可以看到,在Github上这个项目是非常火的。
8. Hadoop已经形成了一个比较完整的生态体系。Spark会这样吗?
夏俊鸾:对于Spark,它从一开始就要是无缝的融入到Spark的这个生态系统来。为什么这么说呢?因为我们可以看到这个大数据的处理框架,一般分为四层,最下面一层,我们可以看作是Cluster的这个资源调度层,比如说有Mesos,或者是Yarn,再上面一层是有HDFS分布式存储层,那么Spark只是跟Map Reduce并行的一个层次,是大数据处理层,那么目前来说,Spark是无缝的融入到HDFS这样的一个分布式存储层,以及Yarn能够完整的支持Yarn,Yarn或者说Yarn能够完美的来支持Spark,所以说在目前的国内或者国外的Cluster里面,只要你们有Yarn,或者有HDFS,就能无缝的把Spark接入到里面来。
9. 那确实是一个非常好的消息,是开包即可用了。那现在Spark在中国现在是一个什么样的一个发展状况呢?
夏俊鸾:现在因为我们这个团队可能是介入Spark比较早的在国内的团队,所以我们可能有介入了一年多的这个时间。然后呢,国内也有很多这个互联网的公司,或视频公司来找我们进行一些合作,我们可以说是在Spark在中国的一个推动者,或者说是一个推广者,能让Spark真正在中国能够落地,能够进入这个产品级的应用。
10. 那实际上就是集成的难度还是大大降低了是吧?
夏俊鸾:几乎可以说是没有难度。然后,我可以这边再提供一个消息,就是Spark的原作者跟他的导师成立了一个叫Databricks这样一个公司,以后就会围绕这个Spark做一些企业级的应用,或者说企业级的distribution的发布包,然后这样子就会对最终用户给提供一些技术支持的帮助,可能并不仅仅是只停留于社区的这样一个开源软件。另外的话在前三天,可能在美国的Hadoop World上面,Cloudera这样一个非常有名的大数据公司,他们已经宣布了在后续的CDH版本里面全面集成Apache Spark,所以说我们可以以后在CDH版本包里面,我们下下来就可以看到Spark在里面了。
11. 能简单介绍一下你的团队吗?
夏俊鸾:可以,我的团队现在基本上有十个人,包括我的老板,英特尔首席工程师,Jason Dai他来负责整个的这个Spark的项目,比如说还有我们下面的,有研究Spark这样一些资深的工程师,比如像黄晟盛,比如像绍赛赛,比如像raymond(刘旭晖),然后还有我们在基于Spask之上的Shark的团队,比如像程浩,比如像史鸣飞同学,他们都是非常资深的工程师,已经贡献了非常多的核心的feature还有Patch给Spark社区。
12. 实际上,就像您这边的团队实际上是Spark的一个contributor,是这样的吗?
夏俊鸾:我们这个团队应该算是给Spark社区贡献了非常多的core feature,比如说像shuffle的一些性能的提高,比如就像整个Spark调度的扩展,比如说像这个整个metrics以及监控系统UI等等,都是由我们这些工程师来进行贡献的。
13. 你们是出于什么样的原因去投入到这个Spark的建设当中的,是公司这个什么样的导向使的你们有这样的资源去做这个事情呢?
夏俊鸾:是这样子的,很多人也问,可能英特尔为什么会在Spark这样一个领域来投入这么多力量,或者投入这么多人力,那我们可以看到Spark是基于内存的一个大数据处理框架,那么英特尔在以后的这个非易失性内存里面,他会有一些这样子的战略部署,或者是战略的考量,所以我们会提前介入这样一个领域,能够让我们可能会以后的硬件也好,就是CPU也好,更好的跑在这些非常流行的大数据处理框架上面,也是为我们以后的这些硬件来服务的。
14. 还是一个软硬结合的战略吗?
夏俊鸾:应该算是一个战略的部署,就像以前我们投入到Hadoop开源软件社区一样,那么我们在比如说跟其他的一些硬件厂商进行竞争的过程中,我们也会提供我们,比如说我们有在英特尔的芯片上有一些workload,或者benchmark或者一些性能,我们可能会拿出来跟他们来竞争,可能在我们的CPU,或者在我们的整个服务器这个处理系统中,跑的性能更加高等等。
15. 现在就是对于使用这个Spark来讲,因为我们也有一些既有的一些算法已经用在Break方式写出来了,那是不是我记得,如果再用Spark,这个对于我本身要做很大的这个迁移工作?
夏俊鸾:这个是我们在跟国内厂商合作的过程中,也会面临到这样的一个问题,就是说因为如果现有的信息已经用Spark已经用Hadoop已经部署好了,然后也已经跑得比较好了,那我们是不是有理由,要在porting到这个Spark上来,这是一个大多数人问都会问到的问题,那么对于我的回答来说,假如说如果你目前的Hadoop的性能已经能满足你的业务需求,那么我是不建议你porting过来的,但是从你意识到这个Spark,或者说知道这个Spark存在以后,对于一些新的feature,或者对于一些新的应用场景,你可以尝试用Spark来搭建,他可以比Hadoop进行有比较高的一项性能提升,或者说呢,在目前的您已经用Hadoop搭建的系统不能满足你的性能要求的时候,那么你也可以尝试迁到Spark这边来。
16. 那么像原来大家写这个Map Reduce实际上对大家的这个计算模型要求是很高的,有些计算是可以裁成Map Reduce的,有些就是裁不成的,那Spark这种计算框架会不会遇到这种模型上这个表达上的困难呢?
夏俊鸾:在Spark,其实在它的最原始的作者Matei,在他的论文里面就已经介绍了,Spark它提供了丰富多样的接口,它并不只有Map或者reduce这样接口,它可能会有其他的,比如会有join,比如会有groupby,比如会有filter,比如会有map,比如会有flatmap,在他的论文里面,他已经比较好的证明了他能够满足目前已经比较流行的一些计算框架,比如map reduce,比如SQL,比如像图的并行计算,比如像迭代式的Map Reduce,Haloop等等,它都能够满足。
17. 计算提供了很丰富的这种计算功能?
夏俊鸾:它提供了非常丰富的计算的接口,它比Map Reduce要灵活,方便的多。
18. 我们现在有没有非常典型的这个Spark这个应用的一些场景,可以举几个例子吗?
夏俊鸾:可以,目前Spark,因为它产生之初,最初的动机可能就是一些迭代式的处理,比如说我们在这个机器学习中,因为大多数机器学习都有迭代式处理这样一个过程,如果能把,这个多次应用的这样数据开始在内存中,它能明显提高这样一个机器学习的这样一个性能,所以目前,比如像pagerank比如像kmeans,比如像推荐系统里面的,比如像simrank,比如像SVD++等等这些算法,我们都是可以用这个Spark来重新来实现,来极大的提高它的性能。
19. 这些已经有人实现的一些相应的软件包,然后我们可以拿来即用吗?
夏俊鸾:当然在Spark之上目前也有叫MLBase这样一个软件包,它目前里面已经集成了一些聚类,分类以及推荐的算法,你也可以去用,当然如果说里面没有这样一个机器学习的算法,那你也可以自己去实现,用Spark的一些特性去设计。
20. 我们回头还安排这个Spark的一个发展,它现在已经是阿帕奇基金会的一个孵化项目?那它未来是打算成为一个正式的项目是吧?
夏俊鸾:那在于明年年初到明年年中,让它力争成为一个顶级项目,阿帕奇顶级项目的这样一个项目。
21. 那作为Spark来讲,它有什么样的技术的路线图呢?
夏俊鸾:Spark的路线图可能会目前来说,然后现在基本的Coal的这个technical已经相对来说比较成熟了,那么可能后续的会在这个应用性,部署的应用性,以及这个容错的应用性,Log比如说UI等等,就是方便最终用户来用的这样一些组件里面会进行一些加深,以及,以便于不是非常资深的人士,或者不是Spark的专家,他也能比较好的来部署Spark的集群,已经用在他们的系统中。
22. 那是不是也会有慢慢的出现就是专门做Spark周围的事情的公司,比如专门的咨询公司?
夏俊鸾:这个目前我知道的可能不多,但是我想随着Spark社区的这个不断的发展,这样一个基于Spark这样一个生态系统中的各种工具,或者软件包应该是不断的出现。