Naresh Kumar在介绍两者之间的区别之前,首先针对Google Dremel进行简单的描述:
什么是Google Dremel?
Google Dremel是个可扩展的、交互式的即时查询系统,专注于只读嵌套(nested)数据的分析。通过集合不同层次的执行树和柱状的数据布局,他能够在几秒内完成在万亿张表上的聚合查询。系统可以扩展到成千上万的CPU上,满足Google上万用户操作PB及的数据。
Apache Hadoop vs Google Dremel:两者之间的不同
Dremel是个数据分析工具,经专门设计用于完成大规模查询结构化数据集(如日志和事件文件)。它支持类SQL语法,区别在于它是只读的。不支持修改或者建立功能,也没有表索引。数据被列式存储,这样有助于提升查询的速度。Google的BigQuery就是Dremel通过RESTful API的一种实现。
Hadoop(MapReduce的一种开源实现)集合了“Hive”数据仓库软件,同样允许使用SQL语句对大量的数据集进行数据分析。Hive本质上是把查询转换成MapReduce运算。对比使用ColumIO格式,Hive则是使用表索引的思想去优化查询。
Hadoop更多的则是用于批处理,这就意味着数据是运行在你已经拥有的数据集上。有数据流入时,流引擎会进行处理。“流”和“实时”通常被互换使用,这也是导致Dremel和Drill混淆的原因,通常都会把它们归类成延时。
值得注意的是Google只是打算将Dremel作为MapReduce的一种补充,而不是替换。通过论文也可以得知,Dremel被频繁的用于分析MapReduce的结果或者是作为大规模计算的测试。Dremel可以做那些通常需要一系列MapReduce才可以完成的查询,但是花费的时间只是使用MapReduce的一小部分。如前所述,Dremel从速度上完全超越MapReduce。
Google Dremel vs Apache Drill
Apache Drill更像是Google Drill的开原版本。OpenDremel,另一个创建Dremel开源版本的项目。当然还有一些其他支持大数据快速查询的项目,比如:Apache CouchDB和Cloudant的演变版本BigCouch。
其他一些大数据分析工具和技术
1. Storm —— Backtype开发并被Twitter开源。
2. Apache S4 —— Yahoo!开源。
而流引擎就是这些实时大数据处理系统(比如Storm和S4)与Dremel的最大区别,当然Dremel是专门针对查询设计。