目的
对比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)
测试结果:
相关推荐
提供cloudera-hive/impala-odbc下载,使用tableau 连接数据源用得到哦,拿去用吧
1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(一) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130465139 本文通过在hdfs中三种不同数据格式文件存储相同数量的数据,...
1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(二) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130465463 本文通过在hdfs中三种不同数据格式文件存储相同数量的数据,...
impala_jdbc_2.5.41.1061(最新) hive_jdbc_2.5.19.1053(最新) 均包含英文使用说明文档,兼容绝大多数的hive/impala版本 该资源来自cloudera,仅用于分享知识,学习和交流,请勿用于商业用途
spring-boot集成mybatis+druid实现 hive/mysql多数据源切换,用mysql数据库作为用户验证库以及用户信息库,hive作为数据可视化源库。
Hadoop databases: Hive, Impala, Spark, Presto For ORACLE DBAs
大规模数据查询Hive及Impala技术原理及架构
python3.6链接hive和impala的依赖包大全,搞了好久才把这些依赖包搞全,希望给其他有帮助
大数据hive和impala的客户端界面工具,提可供sql编辑,数据查看,建表等功能
Impala 与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的...可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。
一直在网上找不到impalajdbc的pom依赖,项目是maven的,所以整理了所用的pom
连接impala所需驱动
hive 操作相关的测试数据集hive
dbeaver-ce-21.2.0.exe; hadoop-common-2.6.0-cdh5.7.0.jar hive-jdbc-1.1.0-cdh5.4.5-standalone.jar ImpalaJDBC41.jar ImpalaJDBC42.jar
jdbc 连接impala或者jdbc连接hive所需的jar包。
包括《Hadoop集群监控与Hive高可用-向磊》,hadoop的三本圣经《Hadoop权威指南(第2版)》,《Hadoop实战》和《Hadoop源码分析完整版》。
1.拷贝hbase-0.94.1.jar和zookeeper-3.4.3.jar到hive/lib下。 注意:如hive/lib下已经存在这两个文件的其他版本,建议删除后使用hbase下的相关版本。 //在/home/hadoop/hive-0.9.0/lib 下,备份两个jar包 mv ...
HADOOP 文件系统SHELL; hive批处理、交互式SHELL; IMPALA介绍、支持的命令。
java通过jdbc操作impala hive的jar驱动包,Impala支持标准JDBC接口,允许从商业智能工具和用Java或其他编程语言编写的定制软件进行访问。JDBC驱动程序允许您从您编写的Java程序访问Impala