Google Dremel让大数据不再“恐怖”

Google Dremel让大数据不再“恐怖”

Hadoop来源自Google在2003年底和2004年发表的两篇研究论文。第一篇介绍了Google File System,它是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通电脑服务器上,但可以提供容错功能并且可以给大量的用户提供总体性能较高的服务;另一篇介绍的是MapReduce,这是是一种编程模型,用于大规模数据集(大于1TB)的并行运算,能够极大地方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。八年之后,Hadoop在网络上得到了广泛的使用,应用领域涉及数据分析到各种这样的数值计算任务。但Google却研发出了更好的技术。

  2009年,网络巨头Google开始用新的技术取代Google File System和MapReduce。对于Google使用的新技术,Mike Olson不吝赞美之词:

  “这些技术代表着未来的发展方向。如果你想知道大规模、高性能的数据处理的基础架构是怎样的,我建议你去看看Google即将发表的研究论文。”

  自从Hadoop兴起以来,Google发表了三篇值得关注的研究论文,主要都是关于如何支持Google大规模网络操作的基础架构。其中一篇详述了Caffeine,一个为Google网络搜索引擎提供支持的软件平台;第二篇是关于Pregel,一个用于映射大量在线信息之间关系的“图形数据库”。但最吸引人的还是一篇介绍Dremel工具的论文。

  Dremel是一种分析数据的方法,它运行在上千台服务器上,能够让你对海量数据执行“查询”操作,例如网页文档集、或者数字图书馆甚至是百万规模的垃圾信息等。这有点类似于在过去传统的数据库上执行SQL操作,过去几十年来,SQL(结构化查询语言)在软件领域得到了广泛的应用。比如说你收集了大量的数字图书,那么你可以自己建立一个能够列出所有作者的名单或者涉及某个特定领域的作者列表的特殊查询。

  监管Google基础架构的Urs Hölzle说:“Dremel是一个类似SQL风格的语言,让你能够在不编程的前提下轻松的定义特定的查询或反复查询。你只需要把查询命令输入命令行。”但是与SQL的不同之处在于,Dremel以极快的速度处理大规模的数据。据Google的论文数据显示,你能够在几秒钟之内查询多达数PB的数据(1PB等于100万GB)。

  Hadoop已经提供了相应工具,能够在大数据集上运行类SQL查询,Hadoop的姊妹项目Pig&Hive就是专门为这个目的而建立的,但是Hadoop存在时间延迟,它是一个用来进行“批处理”的平台,你制定一个任务,它需要几分钟或几个小时来执行这个任务,之后你才能拿到结果,而Dremel则是专门为即时查询而生的。

  Google的论文中写到:“Dremel能够在大数据上同时执行多个查询操作,并且只需要极短的执行时间。在以前,则需要写一系列的MapReduce任务,执行时间也比Dremel要长很多。据Hölzle 称,Dremel在一个PB级别的数据上完成查询只需要短短三秒钟的时间。专门研究数据中心级软件平台的加州大学伯克利分校计算机系教授Armando Fox表示,Dremel的表现是是史无前例的。

  “Hadoop是“大数据”时代的核心,是用来构建分析超大规模信息的工具,但是和当前的大多数大数据工具一样,都存在一些缺点。你不能指望在大数据工具上的查询能够达到传统数据库或商业智能工具的精度和速度,但是Dremel能做到这一点”,Fox如是说道。

  “Dremel既能进行大规模的分析,又能够深入地查看数据,这是我以前觉得不可能的事情,”Fox说,“Dremel能够处理的数据规模和处理数据的时间让人印象深刻。以前人们也开发过不同的大数据系统,但是在Dremel之前,还没有哪个系统能够像它这样如此快速地处理如此多的数据。一般来说,速度和规模你只能二选其一。你更注重速度就得以牺牲规模为代价,反之亦然,但是Dremel能过做到连着兼顾。”

  即使你不是Google员工 ,如今也可以使用Dremel了。Google现在提供了一个基于Dremel的网络服务BigQuery,你可以通过在线API使用这个平台,基本上来说,只要你将数据上传至Google,就可以利用Google的内部架构来执行查询。

  这是Google提供的越来越多的云服务的一部分。起初Google允许你通过Google App Engine在Google的架构上编译、运行整个应用程序,而现在增加了包括BigQuery和Google Compute Engine(用于即时访问虚拟服务器)在内的各种其他工具,可以方便用户及时访问虚拟服务器。

  从Google的论文我们得知,早在2006年,这个系统就已经在Google内部使用了,“数千个”Google员工用它来分析很多事情,从各种Google服务的软件崩溃报告到数据中心内部硬盘行为数据等等。有时候,Dremel可以在数十台甚至数千台服务器上同时运行。

  虽然Hadoop的成功是毋庸置疑的,但与Google相比,Clodera CEO MikeOlson觉得开发这个平台的公司和开发人员还是有些落后了,我们在Dremel身上也看到了同样的情况。虽然Google早在2010年就发表了Dremel论文,但是要看到由第三方开发人员将整个平台仿制出来,仍然还有很长的一段路要走。来自以色列的一个工程师团队正在构建一个叫做OpenDremel的类似系统,不过其中的一位开发人员David Gruzman说他们中断了很长时间,现在才开始编码。

  很显然,Google走在了世界前列,与此同时,它也在引领着世界上其它公司的进步。

推荐阅读