摘要:大数据基础技术领域中Hadoop的地位已获得广泛认同,但目前国内外市场上的Hadoop版本也是林林总总,到底该参照什么标准来考评Hadoop,尤其是给企业应用的Hadoop发行版平台呢? |
Transwarp Inceptor可以支持99个测试案例中的72个测试SQL,并且没有SQL会出现运行错误。在Inceptor 4.0版本中,我们会加入更多的SQL支持,如Intersect/Except Operator,多层级的correlated subquery等,SQL的支持度将会进一步提高。
下表是TPC-DS官方标准测试集合要求的主要SQL语法功能,以及Transwarp Inceptor和Cloudera Impala的支持情况:
由于Cloudera Impala的SQL语法支持非常有限,在Cloudera发布的测试集合中的20个SQL,只有6个是官方正式发布的版本。另外所有SQL中都只有一个事实表,没有出现多个事实表的案例。在TPC-DS的标准测试集合中,一共有39个测试案例是多个事实表之间的连接,而这些案例全部不在Cloudera Impala的测试集合中。此外所有的SQL中事实表都被加上了一个partition key的过滤条件,因此Cloudera的测试有些不够严谨。
与之相对应的,Transwarp Inceptor原生支持窗口统计函数和多维度GROUP BY统计,另外有Cost based optimizer来实时的生成过滤条件,选择更佳的表连接顺序,挑选更合适的表连接算法等,所以能够有效的支持这些标准的SQL测试案例。
稳定性比较
上图是整个测试过程中出现的Out Of Memory次数的比较。Cloudera Impala是基于内存的计算模式,内部采用thrift作用通信协议,所以只要网络或者内存有波动就比较容易出现错误,由于没有相应的容错设计,整个测试的稳定性表现比较差。在测试过程中,部分SQL(如query3,19,42等)一共有10次跑出Out Of Memory的错误,我们每次遇到这种问题后都会重启Impala来完成测试,否则会重复的遇到这个问题。因此,Cloudera Impala的测试过程中有大量的手工动作。
相比较而言,Transwarp Inceptor也是基于内存的计算,但是支持数据可动态地从内存换入换出到磁盘,能够有效的容错等内存使用量超大的计算场景,尤其是在有大量数据倾斜状况(data skew)的场景。另外大量的数据shuffle都是通过HDFS完成的,因此可以确保正确性和容错能力。由于出色的健壮性和容错性,Transwarp Inceptor整个测试计划全部是自动完成的。
性能比较
下图是所有的测试集合的性能对比图。图中纵坐标小于1表述测试案例中Cloudera Impala
性能超过Transwarp Inceptor,而大于1则表示Transwarp Inceptor有更好的性能表现。对于Cloudera Impala不能支持的SQL,我们就标记这个性能比为100。
从图中可见,在Cloudera Impala支持的20个SQL中,有11个SQL的表现超过Transwarp Inceptor,2个表现相当,另外7个Transwarp Inceptor比Cloudera Impala表现的更好。
由于Cloudera Impala的测试案例中手工的给事实表添加了partition key的过滤条件,因此能够有效过滤大量数据,实际参与计算的数据量比Transwarp Inceptor要少,所以在这些相关的案例中Cloudera Impala得以表现良好。另外一些SQL逻辑非常简单的案例中Cloudera Impala的表现也比较好,这个则要归功于Cloudera Impala使用C++代码开发,相对来说执行效率超过Transwarp Inceptor的Java语言。除此之外的其他案例中,如逻辑复杂的SQL、或大量数据参与实际计算、或窗口统计等情况中,Transwarp Inceptor无论从稳定性还是性能上表现都更为超越。
另外,在和开源的Hive执行效率相比中,Inceptor 3.4能够带来10x~100x的性能提升。下图是TPC-DS的部分query在Inceptor和CDH Hive的性能提升倍数,其中最大的提升倍数竟可达到123倍。需要说明的是,这里用的Query跟Impala运行的相同。
更多详细的性能比较以及TPC-DS的测试配置和细节可以参考星环发布的性能白皮书。
测试小结
通过Transwarp Inceptor和Cloudera Impala在TPC-DS案例上的对比,我们不难得到如下结论:
Transwarp Inceptor在SQL支持度上远胜于Cloudera Impala,应用迁移成本更低。
Transwarp Inceptor在稳定性和容错性上表现优于Cloudera Impala,系统运维成本更低。
Transwarp Inceptor在性能表现上和Cloudera Impala基本相当,都有各自擅长的应用场景。
Transwarp Inceptor和Cloudera Impala的可扩展性方面的比较由于硬件资源的限制而没有测试,后期我们会加上相应的测试结果。
结语
虽然标准的Hadoop能够解决用户在数据处理上能与不能的问题,但却不能有效满足用户更深层次的需求,尤其两个方面:一是传统Hadoop使用MapReduce框架作为计算引擎,所有的数据计算以磁盘为中心,因此计算时间长,任务调度延时大,不适合交互式或者迭代式计算场景;二是Hive QL作为Hadoop的查询语言,其支持的语法比传统的SQL要小很多,因此不能满足实际用户的应用要求。
星环科技的Transwarp Inceptor交互式分析引擎构建于Hadoop之上,但使用Spark作为其默认计算引擎。Spark采用基于内存的计算模型和更细粒度的并发调度等技术,有效解决了MapReduce的高延时问题。在Spark基础上,Transwarp Inceptor还扩展了多种执行引擎的优化技术,推出了基于内存与SSD的混合存储结构,有效将SQL任务执行的时间在开源Spark的技术上再降低了数倍,因而能够有效地应用于交互式和迭代式计算场景。
Transwarp Inceptor采用自主研发的SQL编译引擎,完善地支持SQL92、SQL'99等标准,并且部分支持SQL2003以及PL/SQL,因此能够有效满足大部分客户的应用需求,避免大量的应用重写工作。
随着在大数据领域国内外开始处于同一起跑线,我们相信像星环科技这样国内具有代表性的Hadoop发行版厂商将在中国的广阔市场空间中获得长足发展,并且由于中国市场激烈的竞争与磨练,逐步打磨出超越国外先进厂商的技术与实力。
责任编辑:余芯