目的
对比Hive、集算器、Impala这三种大数据解决方案在分组汇总和关联计算时的性能差异。
硬件环境
PC数量:4
CPU:Intel Core i5 2500(4核)
RAM:16G
HDD:2T/7200rpm
Ethernet adapter:1000M
软件环境
操作系统:CentOS6.4
JDK:1.6
Hadoop/hdfs 2.2.0
测试对象
Hive0.11.0
集算器3.1
Impala1.2.0
数据采样
1、每次测试前重启PC;
2、执行任务前在日志中打印开始时间;
3、执行任务后在日志中打印结束时间;
4、用结束时间减去开始时间作为参考结果;
5、1-4重复三次,取参考结果的平均值作为本次测试最终结果。
测试方案
Hive/Impala是类SQL语言,适合常规简单计算,算法复杂时难度增大;集算器是过程性语言,适合复杂的数据计算。因此,测试采用简单的分组汇总和关联计算,使两类语言都能实现。
本测试报告使用了CDH5.0beta里集成的hdfs和hive而不是单独发行的hadoop,这是由于Hadoop的安装部署比较复杂,测试环境总是出现故障,而CDH相对容易。
集算器既支持HDFS也支持本地硬盘,后者更快一些;而hive\Impala只支持HDFS。为了测试三种解决方案的极限性能,集算器使用本地硬盘测试,并事先将数据拆分为多个文件;而Hive\Impala则使用HDFS。
窄表的分组汇总测试
数据样本:
表名:p_narrow
列数:11
行数:5亿行
文本状态下所占空间:120.6G。
数据结构:personid int,name string,sex int,cityid int,birthday int,degree int,col1 string,col2 int,col3 int,col4 int,col5 string
测试案例:
1、一列分组一列汇总
Hive: select personid%10000, sum(col3) from p_narrow group by personid%10000
Impala: select personid%10000, sum(col3) from p_narrow group by personid%10000
集算器:代码分为三部分,分别是:汇总机程序、节点机主程序、节点机子程序。
2、一列分组四列汇总
Hive: select personid%10, count(col1), max(col2), sum(col3), count(col5) from p_narrow group by personid%10
Impala:select personid%10, count(col1), max(col2), sum(col3), count(col5) from p_narrow group by personid%10
集算器:将汇总机程序A5格改为:
=A4.groupx(personid:personid;count(cul1count):cul1count,max(cul2count):cul2count,sum(cul3sum):cul3sum,count(cul5):cul5count)
节点机主程序A5格改为:
=A4.groups@o(personid:personid;count(col1count):cu1count,max(col2count):cul2count,sum(col3sum):cul3sum,count(col5):cul5count)
节点机主程序A1格改为:
=cursor.groups(personid%10000:personid; count(col1count):co1count, max(col2count): col2count, sum(col3sum):col3sum,count(col5):col5count)
3、三列分组一列汇总
Hive: select personid%10, cityid%10, birthdayid%10, col4%10 from p_narrow group by personid%10,cityid%10,birthdayid%10,col4%10
Impala: select personid%10, cityid%10, birthdayid%10, col4%10 from p_narrow group by personid%10,cityid%10,birthdayid%10,col4%10
集算器: 将汇总机程序A5格改为:
=A4.groupx(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; sum(cul3sum):cul3sum)
节点机主程序A5格改为:
=A4.groups@o(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; sum(col3sum):cul3sum)
节点机主程序A1格改为:
=cursor.groups(personid%10:personid, cityid%10:cityid, birthdayid%10:birthdayid, col4%10:col4; sum(col3sum):col3sum)
4、四列分组四列汇总
Hive: select personid%10, cityid%10, birthdayid%10, col4%10, count(col1), max(col2), sum(col3), count(col5) from p_narrow group by personid%10,cityid%10,birthdayid%10,col4%10
Impala: select personid%10, cityid%10, birthdayid%10, col4%10, count(col1), max(col2), sum(col3), count(col5) from p_narrow group by personid%10,cityid%10,birthdayid%10,col4%10
集算器: 将汇总机程序A5格改为:
=A4.groupx(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; count(cul1count):cul1count,max(cul2count):cul2count,sum(cul3sum):cul3sum,count(cul5):cul5count)
节点机主程序A5格改为:
=A4.groups@o(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; count(col1count):cu1count,max(col2count):cul2count,sum(col3sum):cul3sum,count(col5):cul5count)
节点机主程序A1格改为:
=cursor.groups(personid%10:personid, cityid%10:cityid, birthdayid%10:birthdayid, col4%10:col4; count(col1count):co1count, max(col2count): col2count, sum(col3sum):col3sum, count(col5):col5count)
测试结果:
宽表的分组汇总测试
数据样本:
表名:p
列数:106
行数:6千万
文本状态下所占空间:127.9G。
数据结构:personid int,name string,sex int,cityid int,birthday int,degree int,col1 int,col2 int,col3 int,col4 int,col5 int,col6 int,col7 int,col8 int,col9 int,col10 int,col11 int,col12 int,col13 int,col14 int,col15 int,col16 int,col17 int,col18 int,col19 int,col20 int,col21 int,col22 int,col23 int,col24 int,col25 int,col26 int,col27 int,col28 int,col29 int,col30 int,col31 int,col32 int,col33 int,col34 int,col35 int,col36 int,col37 int,col38 int,col39 int,col40 int,col41 int,col42 int,col43 int,col44 int,col45 int,col46 int,col47 int,col48 int,col49 int,col50 int,col51 int,col52 int,col53 int,col54 int,col55 int,col56 int,col57 int,col58 int,col59 int,col60 int,col61 int,col62 int,col63 int,col64 int,col65 int,col66 int,col67 int,col68 int,col69 int,col70 int,col71 int,col72 int,col73 int,col74 int,col75 int,col76 int,col77 int,col78 int,col79 int,col80 int,col81 int,col82 int,col83 int,col84 string,col85 string,col86 string,col87 string,col88 string,col89 string,col90 string,col91 string,col92 string,col93 string,col94 string,col95 string,col96 string,col97 string,col98 string,col99 string,col100 string
测试案例:
1、一列分组一列汇总
Hive: select personid%10000, sum(col3) from p group by personid%10000
Impala: select personid%10000, sum(col3) from p group by personid%10000
集算器:代码分为三部分,分别是:汇总机程序、节点机主程序、节点机子程序。
2、一列分组四列汇总
Hive: select personid%10, count(col1), max(col2), sum(col3), count(col5) from p group by personid%10
Impala:select personid%10, count(col1), max(col2), sum(col3), count(col5) from p group by personid%10
集算器:将汇总机程序A5格改为:
=A4.groupx(personid:personid;count(cul1count):cul1count,max(cul2count):cul2count,sum(cul3sum):cul3sum,count(cul5):cul5count)
节点机主程序A5格改为:
=A4.groups@o(personid:personid;count(col1count):cu1count,max(col2count):cul2count,sum(col3sum):cul3sum,count(col5):cul5count)
节点机主程序A1格改为:
=cursor.groups(personid%10000:personid; count(col1count):co1count, max(col2count): col2count, sum(col3sum):col3sum,count(col5):col5count)
3、四列分组一列汇总
Hive: select personid%10, cityid%10, birthdayid%10, col4%10 from p group by personid%10,cityid%10,birthdayid%10,col4%10
Impala: select personid%10, cityid%10, birthdayid%10, col4%10 from p group by personid%10,cityid%10,birthdayid%10,col4%10
集算器: 将汇总机程序A5格改为:
=A4.groupx(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; sum(cul3sum):cul3sum)
节点机主程序A5格改为:
=A4.groups@o(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; sum(col3sum):cul3sum)
节点机主程序A1格改为:
=cursor.groups(personid%10:personid, cityid%10:cityid, birthdayid%10:birthdayid, col4%10:col4; sum(col3sum):col3sum)
4、四列分组四列汇总
Hive: select personid%10, cityid%10, birthdayid%10, col4%10, count(col1), max(col2), sum(col3), count(col5) from p group by personid%10,cityid%10,birthdayid%10,col4%10
Impala: select personid%10, cityid%10, birthdayid%10, col4%10, count(col1), max(col2), sum(col3), count(col5) from p group by personid%10,cityid%10,birthdayid%10,col4%10
集算器: 将汇总机程序A5格改为:
=A4.groupx(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; count(cul1count):cul1count,max(cul2count):cul2count,sum(cul3sum):cul3sum,count(cul5):cul5count)
节点机主程序A5格改为:
=A4.groups@o(personid:personid, cityid:cityid, birthdayid:birthdayid, col4:col4; count(col1count):cu1count,max(col2count):cul2count,sum(col3sum):cul3sum,count(col5):cul5count)
节点机主程序A1格改为:
=cursor.groups(personid%10:personid, cityid%10:cityid, birthdayid%10:birthdayid, col4%10:col4; count(col1count):co1count, max(col2count): col2count, sum(col3sum):col3sum, count(col5):col5count)
测试结果:
相关推荐
虽然Hive也提供了SQL查询功能,但Impala在性能上有显著优势。Hive依赖于MapReduce进行计算,而Impala则采用并行处理的方式,无需转换成MapReduce作业,从而大大减少了查询延迟。此外,Impala可以直接读取HDFS或HBase...
文章对比了三种基于Hadoop的SQL查询引擎:Hive、Spark SQL和Impala,并对其性能进行了测试和评估。结果表明,Impala和Spark SQL相对Hive有较大的性能提高,而Impala的部分查询速度比Hive快了10倍以上。此外,文章还...
### CDH5.9.0宽表性能测试分析 #### 一、测试环境与配置 在本次测试中,我们使用的部署环境为Cloudera Distribution Including Hadoop (CDH) 5.9.0版本。该环境的具体配置如下: - **DataNode节点**:共有5个节点...
- 硬件配置对Impala性能有直接影响。 - 推荐使用较高性能的CPU和足够的RAM。 - 存储方面,SSD相较于HDD能提供更好的I/O性能。 - 高速网络有助于加速数据传输。 ##### Impala基准测试 - **基准测试的重要性** -...
【标题】:“10-1+Impala+落地&优化:神策数据多维...综上所述,该分享主要涵盖了Impala在大数据环境中的应用,强调了其在构建多维分析平台中的核心地位,以及如何通过一系列技术和策略实现平台的高效运行和性能优化。
该文探讨了SQL在Hadoop数据处理上的应用,并对比分析了两种主要的SQL-on-Hadoop系统——Hive与Impala,在不同场景下的性能表现。 #### SQL-on-Hadoop简介 随着大数据时代的到来,企业越来越依赖Hadoop作为其数据...
本文将围绕现有的主流分布式大数据处理架构进行深入的分析和对比评测,主要包括Hive、Impala和Spark三个开源架构,旨在为大数据分析提供架构选型的参考。文章首先介绍了分布式并行计算的概念,这是处理大数据的主要...
文章中对Hive、Impala和SparkSQL这三种具有代表性的SQL-on-Hadoop查询系统进行了对比分析。这三种系统各有其性能特点,如各自的数据处理能力、查询效率以及对海量数据的优化方式等。 5. 系统性能测试与评估: ...
当前市场上可供选择的数据库种类繁多,包括MySQL、TiDB、Apache Doris、Impala+Kudu、Presto+Kudu、Hive、ClickHouse和Hudi等。这些数据库在性能、功能和适用场景上各有优劣。 在选型过程中,企业面临的挑战主要...
YARN(Yet Another Resource Negotiator)作为资源管理框架,HBase提供NoSQL数据库功能,Sqoop和Flume用于数据导入,MapReduce和Spark用于处理,Hive提供SQL接口,Impala实现快速查询,Solr用于搜索,Kafka处理实时...
6. **性能优化**:分享关于Hadoop集群性能调优的技巧,包括资源调度、数据本地化、磁盘I/O优化等。 7. **安全与监控**:探讨CDH和HDP的安全机制,如Kerberos认证,以及如何利用Cloudera Manager和Ambari进行实时...