|
随着Hadoop的流行,大规模的数据分析系统已经越来越普及。但是,Hadoop比较适合用于大规模数据的批量处理,而对于实时的交互式处理就有点显得力不从心,比如,Hadoop通常无法做到让用户在2到3秒内迅速完成PB级别数据的查询。因此,数据分析师需要一个能够快速分析数据的交互式系统,这样就可以非常方便快捷地浏览数据以及建立分析模型。谷歌公司设计的Dremel就是一个能够满足这种实时交互式处理的系统。Dremel是一种可扩展的、交互式的实时查询系统,用于只读嵌套数据的分析。通过结合多级树状执行过程和列式数据结构,它能做到几秒内完成对万亿张表的聚合查询。系统可以扩展到成千上万的CPU上,满足谷歌公司上万用户操作PB级的数据,可以在2到3秒内完成PB级别数据的查询。 Dremel具有以下几个主要的特点: 1.Dremel是一个大规模、稳定的系统。在一个PB级别的数据集上面,将任务缩短到秒级,无疑需要大量的并发。谷歌公司一向是用廉价机器办大事的好手,但是,机器越多,出问题概率越大。如此大的集群规模,需要有足够的容错考虑,保证整个分析的速度不被集群中的个别慢(坏)节点所影响。 2.Dremel是MapReduce交互式查询能力不足的补充。和MapReduce一样,Dremel也需要和数据运行在一起,将计算移动到数据上面,所以,它需要GFS这样的文件系统作为存储层。在设计之初,Dremel并非是MapReduce的替代品,它只是可以执行非常快的分析,在使用的时候,常常用它来处理MapReduce的结果集或者用来建立分析原型。 3.Dremel的数据模型是嵌套的。互联网数据常常是非关系型的,这就要求Dremel必须有一个灵活的数据模型,这个数据模型对于获得高性能的交互式查询而言至关重要。因此,Dremel采用了嵌套数据模型,有点类似于JSON。嵌套数据模型相对于关系模型而言具有明显的优势。对于传统的关系模型而言,不可避免地存在大量连接操作,因此,在处理如此大规模的数据的时候,往往是有心无力的。而嵌套数据模型却可以在PB级别数据上一展身手。 4.Dremel中的数据是用列式存储的。当采用列式存储时,在分析的时候就可以只扫描需要的那部分数据,从而大大减少CPU和磁盘的访问量。同时,列式存储是压缩友好的,可以实现更高的压缩率,使得CPU和磁盘发挥最大的效能。 5.Dremel结合了Web搜索和并行DBMS(Database Management System)的技术。首先,它借鉴了Web搜索中的“查询树”的概念,将一个相对巨大复杂的查询分割成较小、较简单的查询。大事化小,小事化了,能并发地在大量节点上跑。其次,和并行DBMS类似,Dremel可以提供了一个类似SQL的接口,就像Hive和Pig那样。 Dremel自从2006年开始就已经投入开发了,并且在谷歌公司已经有了几千用户。多种多样的Dremel实例被部署在谷歌公司里,每个实例拥有着数十至数千个节点。使用Dremel系统的例子包括: 分析网络文档; 1.追踪Android市场应用程序的安装数据; 2.谷歌产品的崩溃报告分析; 3.Google Books的OCR结果 ; 4.垃圾邮件分析; 5.Google Maps里地图部件调试; 6.管理中的Bigtable实例的Tablet迁移; 7.谷歌分布式构建系统中的测试结果分析; 8.数万个硬盘的磁盘IO统计信息; 9.谷歌数据中心上运行的任务的资源监控; 10.谷歌代码库的符号和依赖关系分析。 【出处】林子雨.大数据导论.人民邮电出版社,2020年9月第1版.
|