我们Berkeley项目已经做了6年,有8个老师,40个留学生,3个软件团队。我们一共有两个目标:
将机器、人,以及系统连接到一起
整合云端资源来运用大数据解决问题
我们有三个办公室,每六个月就有一个办公室代表来和我们业界和学术界的人进行探讨,也会请来自业界和学术界的人来进行培训和探讨。Berkeley的赞助一半来自政府一半来自企业,我们有超过20个供应商,比如说亚马逊、Google,我们目标是研究开源、分析、堆栈技术。
数据处理包含什么?
数据处理堆栈主要包括三层:存储层、资源管理层和数据处理层。看看在Hadoop里面这个堆栈什么样子?大家应该非常熟了。存储层当然在亚马逊上弄层数多一些,复杂一些,上面是Hadoop Yarn需要与多个框架分享。下面数据处理层有HDFS、S3等。堆栈到底是什么样子?我们用Tachyon存储的项目,在管理层我们有Mesos,这个是始于2009年,当然它也是需要多个框架。数据处理层有Spark,一会儿谈详细节,在谈细节之前我们需要问自己一个问题。就是BDAS和Hadoop如何更好地整合在一起?这两者是互补的,我们看到在Hadoop环境下把这个数据处理做好。比如说BDAS和所有硬件都再在Hadoop MR,所以它和Hadoop和整个计算共融。除此之外不仅仅支持BDAS还支持其它Hadoop的技术。
接下来给大家总体介绍一下各个构件。首先是Mesos,Mesos是资源管理层的,使多框架可以分享同一个集群的资源。这里你只要有一个集群就可以了,而不需要有很多个,能够在多个框架上用。好处是什么?资源节省效率更高,并且更容易共享数据。过去两年以来我们研究具体的生产方式,在Cluster部署有六个月了,六个月以前有六千多个服务器,有超过500多个工程师做Mesos,还有来自第三方的公司的贡献,包括AirBNB。
接下来看一下Apache spark,这是执行引擎,它有两个特点,它可以容错,内容存储效率也很高。在时效节点上它可以对数据进行重构,并且它有更强大的模型,也更快,比Hadoop MapReduce快上100倍。对于同样一个应用来说它写的代码量要比Hadoop MapReduce少2到5倍,并且它也支持互动计算。也就是说它对内存的利用效率更高,能更快得到响应,并且也可以通过内存共享数据。
在Apache Spark上面有很多个构建,其中一个是Spark Streaming,用Spark的功能做快速的计算。流式计算更适用于实时计算的场景。我们可以用它处理不同节点的计算,所有的这些特性实际上在其他类似Spark Streaming技术上不能实现的。这里我们支持批量流的计算。当然比Spark更成熟的是Shark,我们用Shark甚至可以取代Spark。数据在内存里会更快,在硬盘里面它的速度比原来查询速度快上5到10倍。运行效率也会更高,有些公司也在用了,不仅仅是雅虎,雅虎已经用到好几百个服务器上。
这个是新的数据分析的堆栈,你要将实时和历史分析的数据统一化,你要部署一个系统然后开始流计算,我们系统能够提供所有的能力,并且也可以将新的数据和以前数据进行对比,这里面有三个系统。三个系统并不好管理,但是它能够提高你的能力,因为它在所有级别可以共享数据。在流数据当中你也可以对数据进行查询。它不仅更便宜有更多能力,统一化也使得做应用更加容易。
最后是Hadoop和Spark的对比,可以看到我们比它快上百倍,Hadoop当中你如果做这个算法,每一个迭代都可以实施的,但是在迭代之前要先查询一年前的数据。在Spark里面因为由于有迭代你可以在内存当中共享数据,这样互补就很多了。
Spark现在的情况
接下来谈Spark其他的构建在行业当中系列的问题。首先Spark每个月都会有一些见面的活动,我们用户量已超过3000,我们最骄傲的是我们现在有来自超过25家公司100多个人都为我们做出贡献。关于Spark活动的参与 人数,去年八月份开始有150人,2013年的时候就已经涨到250人了,本周初的时候我们举办第一届spark峰会时已超过450人了。
Hadoop第一届只有300人,现在大数据更火了,人数越来越多,整个行业给予的支持越来越多,二月份亚马逊宣布了对于Spark的支持,建立数据库推动开源Spark的发展;一个月之前Cloudera也表示支持Spark。我们感到很高兴就是Cloudera愿意使用Spark,Cloudera愿意把spark嵌入他们的系统。包括Hadoop可以共享我们的内存数据。
我们开发了BlinkDB,使用抽样方法在性能和准确性之间做平衡,服务器响应速度非常快。现在我们看一下这个是一个模型,有两个CPU,我们有512GB的RAM,其实内存处理并不一定能保证处理的交互式,内存进行扫描需要花10秒钟的时间,对于这样一种查询可能不是交互式的查询了。实际上对于这样一种内存计算来讲,这就是由CAP铁三角带来的影响。这样响应时间和速度差距就会一直增长,这中间的时间差每18个月增长一倍,每36个月也会增长一倍。
关于Graphx,这个Graphx可以整合数据和图并行计算,就是对数据的平行计算以及表格的平行计算进行整合,提供了非常高的抽象等级。同时,它还借鉴了Apache Spark的纠错功能。
我们在实验室当中开始MLlib工作,它是个用于机器学习的高质量库,我们提供Spark的应用,方便用户的使用。比如说它们进行数据识别的时候,它们知道怎么样才能识别或者使用相关数据,这样能对具体时间和具体数据情况进行更好的利用。