你好,游客 登录 注册 搜索
背景:
阅读新闻

UC Berkeley计算机教授Ion Stoica:使用伯克利数据分析堆栈分析大数据

[日期:2013-12-06] 来源:CSDN  作者: [字体: ]

  中国最具影响、规模最大的大数据领域盛会—— 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进行实时的分析。

  另外一个问题很多系统用的是公用的地址,一致性就很难得到实现。比如说我有一个很大的在线服务,想知道昨天晚上九点有多少用户使用,我需要很快得到这个答案,并且这个答案就必须保持昨天的数据和今天的数据是一样的。当然这里你要知道它有两个不同编程模型、计算模型,但是要得到同样的结果这并不容易,维护层面也并不容易,也就是一个系统需要更新的话,另外一个系统也需要更新。同样数据共享也很困难和缓慢,比如说这里要想在流数据当中查询的话就非常困难。

  接下来举另外一个例子:你要做出及时的决策你需要什么?你需要检测它的模式,检测得得越快越好,接着你就检测流量是否有增加。然后我们需要问一些问题了:昨天同一个时间我们有一个流量值,比如说早晨八点或者是九点查看邮件的情况。如果想要很快做出决策,就要实现查看其流量是否出现任何异常吗,也就是如果想做查询更快的话,就必须有一个特殊选取的过程。怎么做?数据进入之后用批次处理的方式进行计算,然后用复杂的算法进行检测。

  我们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的应用,方便用户的使用。比如说它们进行数据识别的时候,它们知道怎么样才能识别或者使用相关数据,这样能对具体时间和具体数据情况进行更好的利用。

  总结

  对于堆栈来讲我们必须解决大数据给我们带来的挑战,这里非常重要的一点就是,能让我们批量、交互、流式地计算进行整合和统一化,也就是在同一个系统当中堆栈能够单独使用,使我们的应用更加简单。





收藏 推荐 打印 | 录入:elainebo | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款