Impala与Shark、Drill等的比较 开源组织Apache也发起了名为Drill的项目来实现Hadoop上的Dremel,目前该项目正在开发中,相关的文档和代码还不多,暂时还未对Impala构成足够的威胁【注:Isn't Cloudera Impala doing the same job as Apache Drill incubator project? ,网址为:http://www.quora.com/Cloudera-Impala/Isnt-Cloudera-Impala-doing-the-same-job-as-Apache-Drill-incubator-project】。 从Quora上的问答来看,Cloudera有7~8名工程师全职在Impala项目上,而相比之下Drill目前的动作稍显迟钝。具体来说,截至2012年10月底,Drill的代码库里实现了query parser、plan parser及能对JSON格式的数据进行扫描的plan evaluator;而Impala同期已经有了一个比较完备的分布式query execution引擎,并对HDFS和HBase上的数据读入、错误检测、INSERT的数据修改、LLVM动态翻译等都提供了支持。当然,Drill作为Apache的项目,从一开始就避免了某个vendor的一家独大,而且对所有Hadoop流行的发行版都会做相应的支持,不像Impala只支持Cloudera自己的发行版CDH。从长远来看,谁会占据上风还真不一定。 除此之外,加州伯克利大学AMPLab也开发了名为Shark的大数据分析系统。本刊7月期《Spark:大数据时代的“电光石火”》一文专门分析了与Shark相关的Spark系统,感兴趣的读者朋友可以参考。从长远目标来看,Shark想成为一个既支持大数据SQL查询,又能支持高级数据分析任务的一体化数据处理系统。从技术实现的角度上来看,Shark基于Scala语言的算子推导实现了良好的容错机制,因此对失败了的长任务和短任务都能从上一个“快照点”进行快速恢复。 相比之下,Impala由于缺失足够强大的容错机制,其上运行的任务一旦失败就必须“从头来过”,这样的设计必然会在性能上有所缺失。而且Shark是把内存当作第一类的存储介质来做的系统设计,所以在处理速度上也会有一些优势。 图2 Redshift、Impala、Shark与Hive的Aggregation Query性能对比 实际上,AMPLab最近对Hive、Impala、Shark及Amazon采用的商业MPP数据库Redshift进行了一次对比试验,在Scan Query、Aggregation Query和Join Query三种类型的任务中对它们进行了比较。图2就是AMPLab报告中Aggregation Query的性能对比。在图中我们可以看到,商业版本的Redshift的性能是最好的, Impala和Shark则各有胜负,且两者都比Hive的性能高出了一大截。更多相关的实验结果读者朋友可以参考【注:Big Data Benchmark: https://amplab.cs.berkeley.edu/benchmark/】。 其实对大数据分析的项目来说,技术往往不是最关键的。例如Hadoop中的MapReduce和HDFS都是源于Google,原创性较少。事实上,开源项目的生态圈、社区、发展速度等,往往在很大程度上会影响Impala和Shark等开源大数据分析系统的发展。就像Cloudera一开始就决定会把Impala开源,以期望利用开源社区的力量来推广这个产品;Shark也是一开始就开源了出来,更不用说Apache的Drill更是如此。说到底还是谁的生态系统更强的问题。技术上一时的领先并不足以保证项目的最终成功。虽然最后哪一款产品会成为事实上的标准还很难说,但我们唯一可以确定并坚信的一点是,大数据分析将随着新技术的不断推陈出新而不断普及开来,这对用户永远都是一件幸事。 举个例子,如果读者注意过下一代Hadoop(YARN)的发展的话就会发现,其实YARN已经支持MapReduce之外的计算范式(例如Shark、Impala等),因此将来Hadoop将可能作为一个兼容并包的大平台存在,在其上提供各种各样的数据处理技术,有应对秒量级查询的,有应对大数据批处理的,各种功能应有尽有,满足用户各方面的需求。 未来展望 其实除了Impala、Shark和Drill这样的开源方案外,像Oracle、EMC等传统厂商也没在坐以待毙等着自己的市场被开源软件侵吞。像EMC就推出了HAWQ系统,并号称其性能比之Impala快上十几倍,而前面提到的Amazon的Redshift也提供了比Impala更好的性能。 虽然说开源软件因为其强大的成本优势而拥有极其强大的力量,但传统数据库厂商仍会尝试推出性能、稳定性、维护服务等指标上更加强大的产品与之进行差异化竞争,并同时参与开源社区、借力开源软件来丰富自己的产品线、提升自己的竞争力,并通过更多的高附加值服务来满足某些消费者需求。毕竟,这些厂商往往已在并行数据库等传统领域积累了大量的技术和经验,底蕴非常深厚。甚至现在还有像NuoDB(一个创业公司)这样号称既支持ACID,又有Scalability的NewSQL系统涌现出来。 总的来看,未来的大数据分析技术将会变得越来越成熟、越来越便宜、越来越易用。与此相应的,用户将会更容易、更方便地从自己的大数据中挖掘出有价值的商业信息。 作者耿益锋,清华大学计算机系博士研究生,主要研究方向包括大数据处理、云计算中的新应用和新场景下分布式系统的设计和优化。 作者陈冠诚,IBM中国研究院研究员,主要研究方向为并行计算、计算机体系结构及大规模分布式系统。个人博客为http://parallellabs.com。 |