中国最具影响、规模最大的大数据领域盛会-- 2013中国大数据技术大会(Big Data Technology Conference,BDTC)于2013年12月5-6日在北京举行。数十家领军企业,近七十场主题演讲,不仅覆盖Hadoop生态系统与流式计算,实时计算与NoSQL、NewSQL等技术方向,还对互联网、金融、电信、交通、医疗等创新案例,大数据资源的法律法规、大数据商业利用的政策管制等有深入讨论。
BDTC 2013中国大数据技术大会首日全体大会上,UC Berkeley计算机教授,AMPLab共同创始人,Spark、Mesos核心设计者Ion Stoica发表了题为《使用伯克利数据分析堆栈分析大数据》的演讲。Ion谈到了BDAS的软件框架与Hadoop软件堆栈的关系:它们是互补的,Mesos+Tachyon相当于YARN+HDFS,Spark相当于MapReduce,双方可以灵活的组合。同时,对比原有组合,BDAS的性能要快得多。Ion Stoica认为堆栈必须解决大数据带来的挑战,同时需要统一化批量化处理,在同一个系统中进行使用,使整个过程更便捷。
以下为演讲实录:
Ion Stoica: 非常感谢主持人的介绍,再一次想感谢组委会的邀请,我非常高兴来到这里,我觉得这个会议举办的非常出色,祝贺我们的组委会。接下来的时间我简单给大家介绍一下伯克利数据分析堆栈(BDAS),这个是我们过去几年开发出来的。Hadoop能够让我们进行数据收集的时候,变得更加简单、成本更加低。如今我们收集到很多数据,但是我们所收集到的数据在快速增长。实际上IDC最近出台了一个相关的报告,他们说我们需要收集的数据增长的速度要比我们摩尔定律所描述的还高,也就是数据增速非常快,这个增长速度比摩尔速度增长还要快。还有很多相关的公司它们要收集相关的数据进行数据的挖掘,因为数据能够给它们带来很多的价值。但是这种数据分析的想法,与实践还存在很大的距离,一些大公司,例如Google、Facebook,它们有大量的数据,这个数据量非常高的,同时有很多相关企业进行数据收集,但是它们对于数据收集后价值挖掘并不是那么多。收集到之后对于价值的挖掘是非常困难的。首先我们有海量的数据,但数据非常乱,而且我们想问的问题是非常复杂的。过去几年我们有相关的工具,但是工具尚处于初期的阶段。我们现在解决问题就需要研发出新的工具,这个工具会更快更复杂,但使用起来非常简单。
这里我简单介绍一下数据挖掘的意义。如果我们将数据变成价值,那么我们就能从数据中获得更多内容,知道为什么用户参与度降低了,为什么系统运行变慢了,也知道为什么会遭到那么多攻击,还能利用这些数据进行相关的政策制定。比如开发新产品,或者针对患者病情进行有效的治疗。你在所有这些方面要做出新的决定,做出新的决定我们必须获得相关数据,并且从这个数据进行挖掘获取价值。
为挖掘数据价值,我们到底需要做什么?
首先,我们必须有能力提供交互式的查询。我们都希望做出快速的决策,所以我们需要对数据流进行相关查询。同时新的数据总会强于历史数据,如果整个系统或者整个网站特别慢且存在不能修复的问题的话,那就会有问题了。
其次,这种交互式查询可能涉及到很多错误的决策,这种情况下我们也需要进行相关的分析。
另外数据的流程或者数据的处理过程非常复杂,因此我们想实现1个堆栈,以满足不同处理方式的需求--批量及交互式处理。尽管复杂,未来我们也可以实现这点,为什么?举个例子:比如说今天我们要建立起一个全新的堆栈,我们到底该怎么做?可能我们有一个Hadoop的集群,对数据进行存储后,使用交互式查询对历史的数据进行处理。有时候我们的问题查询起来比较简单,有时候我们对于数据流需要进行实时的分析的,这时候,可以利用相关的历史性的数据或者数据流回答我们查询的一些相关的问题。如果想这种查询更加快速,我们可以用Ad-Hoc,我们用户有这样的需求,他们想要进行快速查询,如果他们想建立实时业务堆栈,该怎么做?我们可以使用AMP Lab进行实时的分析。
另外一个问题很多系统用的是公用的地址,一致性就很难得到实现。比如说我有一个很大的在线服务,想知道昨天晚上九点有多少用户使用,我需要很快得到这个答案,并且这个答案就必须保持昨天的数据和今天的数据是一样的。当然这里你要知道它有两个不同编程模型、计算模型,但是要得到同样的结果这并不容易,维护层面也并不容易,也就是一个系统需要更新的话,另外一个系统也需要更新。同样数据共享也很困难和缓慢,比如说这里要想在流数据当中查询的话就非常困难。
接下来举另外一个例子:你要做出及时的决策你需要什么?你需要检测它的模式,检测得得越快越好,接着你就检测流量是否有增加。然后我们需要问一些问题了:昨天同一个时间我们有一个流量值,比如说早晨八点或者是九点查看邮件的情况。如果想要很快做出决策,就要实现查看其流量是否出现任何异常吗,也就是如果想做查询更快的话,就必须有一个特殊选取的过程。怎么做?数据进入之后用批次处理的方式进行计算,然后用复杂的算法进行检测。