Hadoop发行版厂商星环发布TPC-DS评测结果

    引言

大数据基础技术领域中Hadoop的地位已获得广泛认同,但目前国内外市场上的Hadoop版本也是林林总总,到底该参照什么标准来考评Hadoop,尤其是给企业应用的Hadoop发行版平台呢?

大家可能都听说过TPC–TransactionProcessing Performance Council,它是一个非赢利的标准化组织。它定义了多组标准测试集用于客观地/可重现地评测数据库的性能。TPC中有个Decision Support(DS)子集,即TPC-DS,是用于评测决策支持系统(或数据仓库)的标准SQL测试集。这个测试集包含对大数据集的统计/报表生成/联机查询/数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。

TPC-DS的这个特点跟大数据的分析挖掘应用非常类似。Hadoop等大数据分析技术也是对海量数据进行大规模的数据分析和深度挖掘,也包含交互式联机查询和统计报表类应用,同时大数据的数据质量也较低,数据分布是真实而不均匀的。因此TPC-DS成为客观衡量多个不同Hadoop版本以及SQLonHadoop技术的最佳测试集。随着国内外各代表性的Hadoop发行版厂商以TPC-DS为标准测评产品,TPC-DS也就逐渐成为了业界公认的Hadoop系统测试准则。这个基准测试有以下几个主要特点:

●一共99个测试案例,遵循SQL‘99和SQL2003的语法标准,SQL案例比较复杂

●分析的数据量大,并且测试案例是在回答真实的商业问题

●测试案例中包含各种业务模型(如分析报告型,迭代式的联机分析型,数据挖掘型等)

●几乎所有的测试案例都有很高的IO负载和CPU计算需求

这个基准测试的完整信息请参考http://www.tpc.org/tpcds/。

为了使大家进一步了解星环Hadoop发行版的性能,我们选取了国外具代表性的厂商Cloudera及其产品(ClouderaImpala)做对比测试。

测试硬件环境

我们搭建了两个集群分别用于TranswarpInceptor与ClouderaImpala的测试。每个集群采用4台普通两路x86服务器搭建,每台服务器硬件配置如下:

我们使用的操作系统是64位的CentOS6.4,LinuxKernel版本号为2.6.32。TranswarpInceptor集群部署了Transwarp Data Hub (TDH) v3.4,包括基准的Hadoop 2.2以及Inceptor。系统配置方面,每台服务器的6块硬盘中有1块用于操作系统,其他5块硬盘用作HDFS。Hadoop的各种服务的配置如下:

相对应地,我们在Cloudera的集群中安装了CDH5.1.3(包含Hadoop2.3)以及Impala1.4。

测试软件设定

    TPC-DS配置

考虑到磁盘的容量和HDFS的存储复制模式,我们选择的是500GB的数据总量。SQL测试案例的选择上,在ClouderaImpala中使用的是由Cloudera改动过的TPC-DS测试子集,在TranswarpInceptor我们选用的是TPC-DS为MySQL生成的测试集合,保留了原有的各种复杂SQL,因此能够客观反映出Inceptor在SQL支持上的情况。

ClouderaImpala测试集合可参考https://github.com/cloudera/impala-tpcds-kit

Hadoop版本

TranswarpDataHub(TDH) v3.4使用的是Hadoop2.2 版本,而ClouderaCDH 5.1.3使用的是Hadoop 2.3。HDFS 2.3增加了一些新的功能如DataNode Cache,因此能够更有效地减少磁盘读写。TDH下个版本会升级到Hadoop 2.3,届时我们会再次测试以权衡出HDFS的版本升级带来的性能提升情况。

TranswarpTDH和ClouderaCDH都是用YARN作为资源调度组件,版本号分别为2.2和2.3,但是考虑到YARN这两个版本间没有大的性能相关功能,可以认为资源调度方面没有差异。

其他组件没有太多的差异性,因此可以不考虑他们对最终的测试结果产生的影响。

数据存储格式

TranswarpInceptor可以支持基于内存和SSD的数据表作为数据输入,也支持ORC和Text文件格式。考虑到ClouderaImpala只支持磁盘表,为了公正测试,我们使用Inceptor的磁盘表ORC格式和Impala的Parquet格式做数据对比。另外,我们没有Cloudera Impala的详细资料,因此没有任何额外的参数设置和调优工作,只是使用默认的参数完成Impala的测试。

    测试方法

为了保证数据的合理性,我们所有的性能测试数据都是每个测试案例完成三次运行后取的平均值。同时为了避免系统内部缓存对结果的影响,我们的测试不是连续将同一个测试SQL执行3次,而是连续执行完整个测试集合后再执行下一轮的测试集合。

建表与数据分区

TranswarpInceptor支持两种分区方式:基于单一值的分区方式(uniquevaluepartition)和区间分区方式(range partition)。考虑到TPC-DS基准测试的时间跨度包含十几年的数据,我们选择按照日期相关的列做区间分区(range partition)。大的事实表都采用这种分区策略,包括:store_sales, store_returns, catalog_sales, catalog_returns,
web_sales, web_returns, inventory。另外所有的维度表不做任何的分区设定。原始TEXT格式的数据总量为~490GB,转成ORC格式后压缩成~150GB。

ClouderaImpala使用修改版的测试案例,SQL集合中只包含一张事实表(store_sales)和9个维度表,生成的TEXT格式数据大小约130GB,实际导入的压缩的parquet文件总数据量只有50GB。

测试结果

    测试案例支持广度

TranswarpInceptor可以支持99个测试案例中的72个测试SQL,并且没有SQL会出现运行错误。在Inceptor4.0版本中,我们会加入更多的SQL支持,如Intersect/ExceptOperator,多层级的correlated subquery等,SQL的支持度将会进一步提高。

下表是TPC-DS官方标准测试集合要求的主要SQL语法功能,以及TranswarpInceptor和ClouderaImpala的支持情况:

由于ClouderaImpala的SQL语法支持非常有限,在Cloudera发布的测试集合中的20个SQL,只有6个是官方正式发布的版本。另外所有SQL中都只有一个事实表,没有出现多个事实表的案例。在TPC-DS的标准测试集合中,一共有39个测试案例是多个事实表之间的连接,而这些案例全部不在ClouderaImpala的测试集合中。此外所有的SQL中事实表都被加上了一个partitionkey的过滤条件,因此Cloudera的测试有些不够严谨。

与之相对应的,TranswarpInceptor原生支持窗口统计函数和多维度GROUPBY统计,另外有Costbased optimizer来实时的生成过滤条件,选择更佳的表连接顺序,挑选更合适的表连接算法等,所以能够有效的支持这些标准的SQL测试案例。

稳定性比较

上图是整个测试过程中出现的OutOfMemory次数的比较。ClouderaImpala是基于内存的计算模式,内部采用thrift作用通信协议,所以只要网络或者内存有波动就比较容易出现错误,由于没有相应的容错设计,整个测试的稳定性表现比较差。在测试过程中,部分SQL(如query3,19,42等)一共有10次跑出Out
Of Memory的错误,我们每次遇到这种问题后都会重启Impala来完成测试,否则会重复的遇到这个问题。因此,Cloudera Impala的测试过程中有大量的手工动作。

相比较而言,TranswarpInceptor也是基于内存的计算,但是支持数据可动态地从内存换入换出到磁盘,能够有效的容错等内存使用量超大的计算场景,尤其是在有大量数据倾斜状况(dataskew)的场景。另外大量的数据shuffle都是通过HDFS完成的,因此可以确保正确性和容错能力。由于出色的健壮性和容错性,TranswarpInceptor整个测试计划全部是自动完成的。

   性能比较

下图是所有的测试集合的性能对比图。图中纵坐标小于1表述测试案例中ClouderaImpala

性能超过TranswarpInceptor,而大于1则表示TranswarpInceptor有更好的性能表现。对于ClouderaImpala不能支持的SQL,我们就标记这个性能比为100。

从图中可见,在ClouderaImpala支持的20个SQL中,有11个SQL的表现超过TranswarpInceptor,2个表现相当,另外7个TranswarpInceptor比Cloudera Impala表现的更好。

由于ClouderaImpala的测试案例中手工的给事实表添加了partitionkey的过滤条件,因此能够有效过滤大量数据,实际参与计算的数据量比TranswarpInceptor要少,所以在这些相关的案例中Cloudera Impala得以表现良好。另外一些SQL逻辑非常简单的案例中Cloudera Impala的表现也比较好,这个则要归功于Cloudera Impala使用C++代码开发,相对来说执行效率超过Transwarp Inceptor的Java语言。除此之外的其他案例中,如逻辑复杂的SQL、或大量数据参与实际计算、或窗口统计等情况中,Transwarp
Inceptor无论从稳定性还是性能上表现都更为超越。

另外,在和开源的Hive执行效率相比中,Inceptor3.4能够带来10x~100x的性能提升。下图是TPC-DS的部分query在Inceptor和CDHHive的性能提升倍数,其中最大的提升倍数竟可达到123倍。需要说明的是,这里用的Query跟Impala运行的相同。

更多详细的性能比较以及TPC-DS的测试配置和细节可以参考星环发布的性能白皮书。

  测试小结

通过TranswarpInceptor和ClouderaImpala在TPC-DS案例上的对比,我们不难得到如下结论:

TranswarpInceptor在SQL支持度上远胜于ClouderaImpala,应用迁移成本更低。

TranswarpInceptor在稳定性和容错性上表现优于ClouderaImpala,系统运维成本更低。

TranswarpInceptor在性能表现上和ClouderaImpala基本相当,都有各自擅长的应用场景。

TranswarpInceptor和ClouderaImpala的可扩展性方面的比较由于硬件资源的限制而没有测试,后期我们会加上相应的测试结果。

结语

虽然标准的Hadoop能够解决用户在数据处理上能与不能的问题,但却不能有效满足用户更深层次的需求,尤其两个方面:一是传统Hadoop使用MapReduce框架作为计算引擎,所有的数据计算以磁盘为中心,因此计算时间长,任务调度延时大,不适合交互式或者迭代式计算场景;二是HiveQL作为Hadoop的查询语言,其支持的语法比传统的SQL要小很多,因此不能满足实际用户的应用要求。

星环科技的TranswarpInceptor交互式分析引擎构建于Hadoop之上,但使用Spark作为其默认计算引擎。Spark采用基于内存的计算模型和更细粒度的并发调度等技术,有效解决了MapReduce的高延时问题。在Spark基础上,TranswarpInceptor还扩展了多种执行引擎的优化技术,推出了基于内存与SSD的混合存储结构,有效将SQL任务执行的时间在开源Spark的技术上再降低了数倍,因而能够有效地应用于交互式和迭代式计算场景。

TranswarpInceptor采用自主研发的SQL编译引擎,完善地支持SQL92、SQL‘99等标准,并且部分支持SQL2003以及PL/SQL,因此能够有效满足大部分客户的应用需求,避免大量的应用重写工作。

随着在大数据领域国内外开始处于同一起跑线,我们相信像星环科技这样国内具有代表性的Hadoop发行版厂商将在中国的广阔市场空间中获得长足发展,并且由于中国市场激烈的竞争与磨练,逐步打磨出超越国外先进厂商的技术与实力。

引用自:http://www.cctime.com/html/2014-11-5/20141151514541991.htm

时间: 2024-08-23 10:10:43

Hadoop发行版厂商星环发布TPC-DS评测结果的相关文章

Hadoop入门扫盲:hadoop发行版介绍与选择

一.hadoop发行版介绍 目前Hadoop发行版非常多,有Intel发行版,华为发行版.Cloudera发行版(CDH).Hortonworks版本等,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,是由于Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并作为开源或商业产品发布/销售. 目前而言,不收费的Hadoop版本主要有三个,都是国外厂商,分别是: Apache(最原始的版本,所有发行版均基于这个版本进行改进) Cloudera版本(

cdh5 hadoop发行版安装手册(原创)

自己亲自实验的结果,留个纪念,也供人参考,少走弯路. http://files.cnblogs.com/files/nxzwt/CDH5Hadoop%E5%8F%91%E8%A1%8C%E7%89%88%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C.haozip01.ziphttp://files.cnblogs.com/files/nxzwt/CDH5Hadoop%E5%8F%91%E8%A1%8C%E7%89%88%E7%A6%B

Hadoop发行版本介绍

前言 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界及厂商,所有数据软件,无一不向Hadoop靠拢.Hadoop也从小众的高富帅领域,变成了大数据开发的标准.在Hadoop原有技术基础之上,出现了Hadoop家族产品,通过“大数据”概念不断创新,推出科技进步. 目录 Hadoop的发展史 Hadoop的发行版本的选择和介绍 1. Hadoop发展史 1.1Hadoop产生背景 Hadoop 最早起源于Nutch .Nutch 是

Hadoop 发行版本 Hortonworks 安装详解(一) 准备工作

一.前言 目前Hadoop发行版非常多,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,完全是由Apache Hadoop的开源协议决定的:任何人可以对其进行修改,并作为开源或商业产品发布/销售. Hortonworks这个名字源自儿童书中一只叫Horton的大象.雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks. Hortonworks有两款核心产品:HDP和HDF Hortonworks没有对产品收费,而是将这两款产品完全开放

Hadoop发行版本之间的区别

商业发行版主要是提供了更为专业的技术支持,这对于大型企业更为重要,不同发行版都有自己的一些特点,本文就各发行版做简单对比介绍.对比版选择:DKhadoop发行版.cloudera发行版.hortonworks发行版.MAPR发行版.华为hadoop发行版 Hadoop是一个能够对大量数据进行分布式处理的软件框架. Hadoop 以一种可靠.高效.可伸缩的方式进行数据处理.Hadoop的发行版除了有Apache hadoop外cloudera,hortonworks,mapR,华为,DKhadoo

跨发行版应用打包格式 Flatpak 发布

关于Linux的学习,请查看书籍<Linux就该这么学> GNOME 项目组的 Allan Day 正式发布了 Flatpak,这并不是我们第一次提及 Flatpak,你可能已经知道它是一个无依赖关系的.跨发行版的软件打包框架,它可以让用户在多个基于 Linux 内核的操作系统上使用各种桌面应用程序.有些人可能记得 Flatpak 之前的名字叫做 XDG-App,Flatpak 是应 GNU/Linux 和开源软件开发者所需而出现的,可以让他们在多个桌面平台.操作系统上发行软件时,不用花费几个

最小 Linux 发行版 Tiny Core Linux 7.1 发布

Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小.昨天 5月23日刚刚发布的 Tiny Core Linux 7.1 也仅仅只有区区 11.7 MB 大小而已,体积之小实在令人叹为观止,要知道普通的 Ubuntu 也好,Debian 也好, 动辄就是800MB-4700MB,一张光碟装不下是时常的事儿.今天我们将带你看看最小Linux发行版的神奇魅力! 然而麻雀虽小五脏俱全,“高大强”不代表武功盖世,“矮小瘦”

极度简约 最小 Linux 发行版 Tiny Core Linux 7.1 发布

感谢Linux Story的投递 Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小,昨天 5月23日刚刚发布的 Tiny Core Linux 7.1 也仅仅只有区区 11.7 MB 大小而已,体积之小实在令人叹为观止,要知道普通的 Ubuntu 也好,Debian 也好, 动辄就是800MB-4700MB,一张光碟装不下是时常的事儿. 然而麻雀虽小五脏俱全,“高大强”不代表武功盖世,“矮小瘦”不见得水平低劣.

学hadoop基础入门之发行版选择

经常会看到这样的问题:零基础学习hadoop难不难?有的人回答说:零基础学习hadoop,没有想象的那么难,也没有想象的那么容易.看到这样的答案不免觉得有些尴尬,这个问题算是白问了,因为这个回答似乎什么也没给出来.这个问题的关键在于"零基础"到底是个什么样的基础?所谓的零基础大体可以分为两种:第一种是hadoop初学者,有一定的Linux基础.虚拟机和Java基础:第二种是hadoop兴趣爱好者,但缺乏最基本的Linux基础.虚拟机和Java基础.如果是第一种,其实学习hadoop的难