Spark开源栈PM Ram Sriharsha:Apache Spark 2.0概览

【****现场报道】5月13日-15日,由全球最大中文IT社区****主办的“2016中国云计算技术大会”(Cloud Computing Technology Conference 2016,简称CCTC 2016)在北京新云南皇冠假日酒店隆重举行。本次大会以“技术与应用、趋势与实践”为主题,聚焦最纯粹的技术干货分享,和最接地气的深度行业案例实践,汇聚国内外顶尖技术专家,共论最新的云计算技术实践与发展趋势。

北京时间5月13日上午9:40,Databricks,Spark开源栈PM,Spark PMC成员 Ram Sriharsha带来《Spark 2.0概览》的主题演讲。首先围绕什么是Spark展开演讲,其次又介绍了在大数据中所面临的挑战,详细分析Spark近几年的演变过程。他认为Spark非常了不起,是一个很好的工具。并指出Spark基础设施复杂、在这方面的人才有限、编程很困难、扩展性困难都是大数据所面临的最大挑战。

Spark开源栈PM Ram Sriharsha:Apache Spark 2.0概览

Databricks,Spark开源栈PM,Spark PMC成员 Ram Sriharsha

以下为演讲实录:

Ram Sriharsha给大家介绍一下Spark,它的路线图,且在大数据中面临着什么样的挑战,同时,Spark又能够帮助我们如何应对这样的一些挑战。

在2012年的时候Ram Sriharsha提出来,关于在Spark方面是怎么来做的问题,并且在那一年Spark达到了成熟的阶段,Ram Sriharsha认为Spark它是一种分布式的数据群,是一种引擎。首先,大家看到这个要实施非常容易,但是在具体的组织方面非常的复杂,在这儿的整合非常的不错,大家看到它能够进行很好的竞争,这是2012年的情况。

现在我们再回到2016年,至今已经经历了很长一段时间,现在的路线图是这样的,大约在2012年的时候达到成熟期,之后Databricks有了孵化器,2014年Spark1.0版本发布,这让大家可以很迅速地进行拓展,在Spark上有很多工作可以做。

在具体实施方面,Databricks有一些具体项目,它能拓展一些编码,2015年当时Databricks也引入了Spark的DataFrames Tungsten ML Pipelines,再看一下2016年推出的Spark2.0,它允许开发人员做什么样的工作呢,这一方面可能感兴趣的人非常多,先看一下Spark现在的意义是什么,它既是一种统一的引擎,又是拥有一个框架的基础。大家所使用的Spark,在一些平台上可以进行一些迭代,你们可以进行数据收集,再对数据进行分析,这一切构成了数据来源,因此现在Spark可以运行在很多的平台之上。

今年Ram Sriharsha觉得对Spark来说是一个非常了不起的一年,因为Databricks有了一些关于大数据数据开发的项目,Databricks进行了很多的计算,同时在去年Databricks也推出新的语言支持,在行业当中进行了推广,它的增长非常地迅猛,但是大家看一下现在的情况。

大家再看一下Spark的Committer,从2014年到2015年的12月,在全球Spark的发展都非常迅猛,对Sparker来说十分开心。因为越来越多的开发者使用Spark,他们的积极性非常高,有很多人一直在关注Spark的演变,它提供一些创新性和颠覆性的平台。

看一下具体的Spark应用,可以把它分为以下几种:

第一就是企业智能,在BI方面也包括机器的学习。

第二是有关主性发展,越来越多让大家看到时时性的应用。

因此大家可以看到Spark应用的范围是非常广泛的,总之 Ram Sriharsha觉得Spark的应用非常了不起,而且是在短时间之内让整个行业对Spark有了非常高的认知,并且大家把它当做一种非常好的工具和技术。

Spark几乎能做所有的事情,当然对Spark来说它增长的空间也非常大。原因就是大家至今还没有完全解决大数据所带来的挑战,在接下来这几年当中,开发者可以发现在过去几年大数据运用起来困难很大,这一方面后面的讲师会提很多内容,总之大数据实在是太复杂了,而且基础架构管理也非常不好用,另外可以看到对于Spark方面人员的技能技巧可能也不充分,我们缺乏这方面的人才,我们需要弥补这方面的空白,并且Spark编程也非常的困难。

最后一个挑战就是Spark可拓展性是非常好的,但是要进一步的进行拓展,可能还是比较困难的,需要一些专门的技能技巧,之后我会介绍这一方面具体的工作,刚才所提到的都是开发者所面临的大数据的挑战,必须加以解决。

由于对基础架构方面的管理非常困难,比如说设置一个典型的大数据的集群,你必须要进行以下几方面设置,对于PLC必须雇佣专业专家,对他们进行培训才能够进行设置,这对于管理层来说确实是一个很大的负担,而现在Ram Sriharsha告诉大家,在Databricks的论坛上,你们可以非常轻松地解决这个问题,因为对Spark来说,你只需点击一下就可以进行设置,能够帮助你来降低在基础架构管理方面巨大的成本,可以把他们的工作量减少,另外Ram Sriharsha也告诉大家怎么进行Spark应用。

接下来Databricks在管理方面做了很多工作,大家现在进行设置非常容易,在Cloud,Ram Sriharsha刚才提到了一个问题是要找到相关的人才很困难,Databricks的解决方案就是培养人才,Databricks设置了一些相关的学术项目,大家都可以参加,Databricks可以把信息推到很多人面前,你可以参与到Databricks的课程培训当中,Databricks做了很多事情,以确保能够培养人才。

接下来的两个问题是编程非常困难,同时要进行拓展也很困难,实际上关于编程的困难,指的是在数据科学和大数据之间有一个脱节,有的时候大家所提的是大数据的工程,但如果提到数据科学的时候,可能你就不太熟悉。有很多的技术是需要非常高的数据速度进行运作,比如说我们提高到了TB或者PB速度的时候,这时候就必须要使用Spark,怎么能把速度的缺憾得以弥补,怎么提升速率,这里的缺点你不可能一下子就达到,于是需要让大家学一种全新的语言?或者是说Databricks可以给大家弥补空白?Spark的用户如何进行拓展,而数据中心使用了大部分的数据,在这个时候大家可以来使用一些文档,但是对开发者来讲希望Databricks能够给大家提供更多的数据集,它们用起来更加方便。

所以怎么来间接扩展呢?对于Spark的使用可以采用几种方法:第一创造一种API,用尽可能简单的语言表达,并且确保在数据中心里面,它可以有不同的语言去选择,同时也要确保这个平台依然是有效的,也就是说它需要这个平台上面运行,必须在框架里面去处理,而且它们进行任务操作的时候没有太多的障碍。

另一个就是说要对于一些小的数据工具进行无缝整合,开发者需要有能够使用小数据的工具,所以Spark创建了一些模型,可以进行各种分析,有的时候你可能不见得需要特别大规模的扩展模式,当然有时候你需要根据自己的体系的要求来进行扩展,所以说种灵活性很重要。

刚才提到要创建一个尽可能简单的API,你就需要去了解到底在计算机里面应该怎样去描述,所以说你可以进行一些简单的设计,但是如果还想要进一步的优化,之前我们所提到的DataFrames,Spark从这里边学了很多,可以让Spark和DataFrames结合,它可以让开发者用同样的语言,也可以更好地应对竞争,所以说Spark在这方面的交互性非常好,但是Databricks也比较关注它的安全性,所以在整个的环境下,如何在同样的要求下又能够实现它的灵活性?

这就需要Spark的Static数据集,你可以创建一个数据集,可以用一些过滤器或者是一些应用,你可以得到一个专门用于你的用途的编程,而且这是非常有利的,你在DataFrames上也可以这样做,如果你需要更大的安全性你可以有不同的选择,也就是说他可以让你尽可能的简单,同时又可以覆盖各种不同的可选的需求。

还有一点,就是用不同的语言都可以去结合,这都是有很多的技术,Spark可以把你的语言变成自己比较喜欢的语言,这也是一种开发者经常会用到的计算方式,一般来说他跟现在所用的模块都比较类似,而且很多人都比较熟悉这样的模式,所以没有太多关于操作方面的障碍,你也可以把他进行分配,如果这个数据中心只是想进行竞争,你必须要让它变的特别简单,他们用同样的计算方法去实现你的目标,你不需要用两种不同的算法去做,所以他可以支持多种语言,比如说Kmeans可以被培训用Spark,他在这里面选择的语言是Path,一旦他接受了培训模式,就可以保存到系统里面,Path这个模式也是一样的,后续是默认这个语言来进行计算,所以你不需要再去用两种不同的算法去做自己的工作,也就是说使用不同语言的人都可以去利用这样的工具。另外一点,希望除了一些模式以外,希望能将这个模式序列化,也就是说你有这个能力可以去把他们部署在不同的地方。

Databricks可以尽可能的建立一种简单表达的数据集整合,而且各种不同的语言的算法都可以进行绑定,而且可以进行一致性可扩展的执行,且可以和一些小数据工具来进行配合。

另外一个就是怎么能够把扩展能力尽可能的加强,这也是大家比较关注的问题,所以说还是要回到最初的最基本的东西,因为你想要的是把这个速度提升数量级,你要是想特别快,比如说想提高十倍,你不可能只是依赖于原来的方法,也许能优化6%、2%,但是如果说你想达到100%或者99%就很难再依赖于传统的方法。

你必须要从根本上来做一些变化,你就需要看一下你怎么能够更好的去快速解读这些数据,比如某一个数据集的话,你需要进行一个过滤,基本上我们的代码类似这样,然后我们可以进行进一步的升级处理,绝大多数的数据库使用的也是迭代模型。

下一件事情就是说要去了解我们下一步会产生的是什么,比如说过滤器会去进行输入的过滤,如果说有一个应届毕业生,让他在十分钟之内在Java里面执行这个查询,对比一下这个查询和另外一种查询方式之间不同的区别,你可以看到基本上最后的表现会有这样的一个差距,可以看到用传统的方法和新的方法是不太一样的,为什么一个刚毕业的学生就能够打败一个拥用30年经验的研究人员,是因为其实这里面有很多虚拟的功能,而且在内存之内调动数据,而且它可以更好地去进行编码。

Whole-stage Codegen,它就像是一个关于整个排序的操作人员,要了解整个执行和运行的顺序是怎样的,那在这里面最大的一个挑战就是——Spark的路线图,现在其实可以看到,主要是因为大数据特别难以去利用,所以Spark的目的就是希望简化基础设施的管理,现在基础设施的管理非常难,Databricks希望能够使用Spark的集群,实现一键部署,而且现在的人才比较有限,编程也是比较难的。另外扩展的能力也是比较难去实现的,所以说Spark相当于扮演了一个编译器的角色,希望能够简化那些利用大数据的工作,这就是Ram Sriharsha给大家简单介绍的Spark的发展方向和运行的目的,谢谢。

更多精彩内容,请关注直播专题2016中国云计算技术大会(CCTC),新浪微博@****云计算,订阅****云计算官方微信公众号。