首页 / 新闻

07.

28

2015

2015 Hadoop技术峰会演讲速记2:五种 SQL on Hadoop 的全面分析,去IOE再非空谈

技术博客

Hadoop的诞生是划时代的数据变革,但关系数据库时代的存留也为Hadoop真正占领数据库领域埋下了许多的障碍。对SQL(尤其是PL/SQL)的支持一直是Hadoop大数据平台在接手旧数据时代时亟待解决的问题。Hadoop对SQL数据库的支持度一直是企业用户最关心的诉求点之一,也是他们选择的Hadoop平台的重要标准。

本次的中国Hadoop技术峰会在SQL on Hadoop领域设有专门的分论坛,表示出了主办方及业界对这一问题的重视。幸运的是,在七月二十三日下午的分论坛上,我们也的确看到了当前中国Hadoop技术在这方面已取得了突破性的进展。

此次的分论坛,Facebook、惠普、MapR、星环科技等多家业内巨头在SQL on Hadoop领域进行业内的分享与比拼,这也是这些公司首次在SQL领域的研究上同台竞技。

当日下午,星环科技首席工程师陈振强博士题为《 A comparison study of SQL on Hadoop engines》对当前五种SQL on Hadoop引擎进行了性能与兼容性各方面的比较,一时间高下立判,引来众多关注。

陈博士比较的五种引擎分别是Cloudera的Impala、Hontonworks的Tez、星环科技的Inceptor、Spark SQL和Pivotal的Greenplum。

首先在对SQL的支持上,Inceptor和Greenplum对于SQL的支持都超过了其余三种引擎,星环的Inceptor引擎则是达到了SQL2003和PL/SQL的全面兼容。

随后他又展示了在TPC-DS系统测试基准的99个测试案例中,星环Inceptor与Pivotal Greenplum理论通过数都是99个,处于领先地位。但在实际运行中,Inceptor全数通过,Pivotal Greenplum则有4个出错,实际通过数为95个。星环Inceptor引擎改进了内存计算引擎Spark,内存的使用更加合理,所以稳定性高,TPC-DS 99个SQL的连续测试中都能够正确运行,而不会象其它引擎一样出现Out of memory的情况。

在性能优化方面,星环Inceptor引擎实现了CBO(基于代价的优化),并为之添加了几百种优化规则,如Join顺序优化、过滤条件前置等等,通过这些优化规则Inceptor引擎可以得到非常高率的逻辑执行计划。陈博士以TPC-DS中的Query3为例介绍了CBO的优化效果,Query3的原始的Join顺序为date_dim(小表),store_sales(大表),item(小表)。store_sales与date_dim的过滤率为1/6左右,store_sales与item的过滤率为1/1000左右。通过CBO优化后的Join顺序为store_sales, item,date_dim,比没有CBO优化性能提升5倍以上。

星环Inceptor引擎还实现了代码生成器(Code Generator),其中实现了Constant folding、loop unrolling、loop invariant host、CSE等传统编译器中的优化方法,使得表达式的计算更加高效。在TPC-DS测试中,Inceptor引擎表达式的计算性能与基于C++实现的Impala引擎相当,有些SQL性能甚至更好。

此外,星环Inceptor引擎基于Spark的DAG进行了减少shuffle的优化,使得计算的stage更少、效率更高。
 

正是有了如此多的优化,在TPC-DS基准测试中,星环Inceptor引擎的性能比类MPP引擎Impala提升2.7倍,比Map/Reduce改进引擎Tez提升4.7倍,比开源的SparkSQL提升5.5倍,比MPP引擎GP提升3.3倍。

领军去IOE时代,自主研发先行者

总结来说,在SQL支持上,星环Inceptor遥遥领先,而计算引擎框架渐渐趋同,优化效果各有不同。最后,陈振强博士还提到,国内政策目前对中国IT行业去IOE有着迫切的要求,但在技术和引擎上的弱势或者极差的兼容性都将对去IOE造成阻碍。而星环科技自主研发Inceptor,在兼容效果和性能表现上的优异都可与国外同行比肩,可以说,为国内IT业去IOE的自主化研发带来的希望与成功的曙光。