9月1日,由工业和信息化部指导,中国信息通信研究院、中国通信标准化协会主办,数据中心联盟承办的“2016可信云大会”在京隆重召开。在9月2日下午的大数据分论坛上,Hulu大数据架构组负责人董西城发表了题为《Spark2.0新特性与展望》的演讲。
Hulu大数据架构组负责人 董西城
以下是演讲实录:
大家好,我叫董西城,今天很高兴跟大家分享Spark2.0。我我现在是就职于美国的一家公司,做正版的美剧和电影。主要的市场是在北美。我之前写过Hadoop的技术内幕这本书,主要工作是围绕Hadoop和Spark方面。
今天主要介绍的是Spark2.0,我会从以下几个角度给大家剖析Spark2.0。
首先简单介绍Spark,第二部分是会给大家谈谈当前Spark在互联网公司的应用,都做什么。第三部分是Spark2.0里面新的一些特性。
第一部分,Spark2.0的简介。
Spark主要是原自于Mapreduce,是美国的一些大学的博士一些大数据的研究,首先是Mapreduce有一些局限性,它受限,你要实现复杂的功能,要做很多的工作。大家从名字上也可以看出来,Mapreduce的优点是写起程序来非常简单,缺点是太简单了,以至于写复杂的程序要做大量的工作。第二个是性能,十年前磁盘是比较廉价的,内存是比较昂贵的,那时候很多的观念都是基于磁盘上设计一些都是,而Mapreduce是这样做的,很多的设计理念是基于磁盘进行的。所以导致他的性能非常低效。而到今天已经发生了变化了,磁盘已经成为过去了,所以在这块做了一些尝试,想尽可能的在内存上做一些工作,优化框架。
另外一个背景是多种框架并存。当研究Mapreduce的这些人,在设计Mapreduce的时候,发现了当时多种框架是并存的,当时有三种并行计算的场景,第一个是批处理,比如说我要产生一个报表,明天看到就可以了。最典型的是批处理,当时简单的是Mapreduce/Hive,第二个是交互式处理,最典型的是impala/presto,第三种是实时处理,典型的是storm。像阿里巴巴有个滚动的大屏幕,要实时的统计截至1点的时候交易量是多少,那是实时的统计,实时的汇总交易数据,做一个汇总展示,这是一个实时数据,有一笔记录我就做一个汇总。这是多种框架并存的局面。
如果你们公司每一种应用场景都需要的话,你可能至少要有三套系统,有三个集群,这样的话管理起来,运行起来非常的麻烦。是不是能设计一套系统解决这三个场景,而且他们是一套,这样的话学习起来都是统一的,接口都是统一的,维护起来也是统一的。而不是说你要搭建三套,每一套都需要单独学习,因为它由不同的生态构成的。这样的话,你需要三个系统,这三个系统是完全的不同的方式,你的学习成本和运维成本都会非常高。
那么我们做了一个尝试,Spark的特点,一个是非常的高效,统计上看,比Mapreduce快10到100倍,从数据上可以看到,Mapreduce是非常慢的框架。快多少倍取决于具体的场景。为什么这么高效呢?第一,它是DAG的引擎,而Mapreduce也可以把它看成DAG的引擎,但是是非常简单的,它只有两个,点和边。如果想做非常复杂的运算,是非常非常大量的作业。如果你用Mapreduce做的话这个要做四个作业,这个是通过存储不不同的Mapreduce作业衔接在一起的。而通用的DAG引擎,所有的数据都不需要落在这种文件系统里,直接可以通过流式的,或者是其它的方式衔接起来。这是Spark的一个核心的设计理念。
第二个,它可以充分的使用内存。SparK提供了充分使用内容的能力,可以把数据处理完之后做落到磁盘上或者是其它地方,是非常灵活的。实际上,如果你不想用内存,可以关掉,这个时候可以做一些简单的运算。
另外是易用的,提供了四种编程语言,代码量也比Mapreduce要小2到5倍。现在有一个趋势,就是还是编程语言越来越受欢迎,鄙视说Scala,python。
第三个是与Hadoop集成,可以读写hdfs/hbase,与YARN集成。
Spark核心理念,一个是RDD,弹性分布式数据集,对分布式数据抽象,你可以采用其它方式来实现,也是没有问题的。在RDD上,如果把这个数据转成RDD后,它提供了丰富的编程接口。比说有map,filter等等,有多少个结点都可以扩展。
Spark还有个非常强大的方式,就是部署方式非常的灵活,你可以运行在本地,也可以运行在standalone上,也可以部署在mesos/yarn。