文档章节

使用TPC-H对Hive测试

vieky
 vieky
发布于 2014/12/05 10:58
字数 859
阅读 656
收藏 1

最近由于工作要求,需要对Hive进行一下测试。在一篇论文中看到使用TCP-H,上网查了一下还算是比较靠谱的一个基准测试程序,所以决定拿来一试。网上关于这方面的博客貌似很少(能力有限,没找到很多),通过自己摸索,写下这个东东,共享之,也希望同样关注这个方面的人能够共同讨论。

系统环境:

    6个结点,ubuntu01为master结点,ubuntu02-ubuntu06为slave结点

    Ubuntu 12.04 LTS

    Hadoop-1.2.1

    Hive-0.13.1

    tpch_2_14_3

一、安装配置

1、下载TPC-H源码tpch_2_14_3.zip,用来生成测试数据

      网址:http://www.tpc.org/tpch/default.asp

2、将TPC-H压缩包解压,本文中解压目录为:/opt/

     命令:ubuntu@ubuntu01:~$ unzip tpch_2_14_3.zip -C /opt/

3、进入tpch目录下的dbgen子目录下,将makefile.suite文件拷贝为makefile,并对makefile进行修改

     命令:ubuntu@ubuntu01:/opt/dbgen$ cp makefile.suite makefile

     命令:ubuntu@ubuntu01:/opt/dbgen$ gedit makefile

     在makefile文件中的相应行进行如下修改:CC      = gcc

     # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)  

     #                                  SQLSERVER, SYBASE  

     # Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS, 

     #                                  SGI, SUN, U2200, VMS, LINUX, WIN32   

     # Current values for WORKLOAD are:  TPCH 

     DATABASE= SQLSERVER  

     MACHINE = LINUX  

     WORKLOAD = TPCH 

4、修改dbgen文件夹下的tpcd.h文件

     修改其中的SQLSERVER段:

     #ifdef  SQLSERVER
     #define GEN_QUERY_PLAN        "EXPLAIN;"
     #define START_TRAN                "START TRANSACTION;\n"
     #define END_TRAN                "COMMIT;\n"
     #define SET_OUTPUT                ""
     #define SET_ROWCOUNT                "limit %d;\n"
     #define SET_DBASE                "use %s;\n"
     #endif

5、执行makefile

     命令:ubuntu@ubuntu01:/opt/dbgen$ make

6、生成需要用的数据

     命令:ubuntu@ubuntu01:/opt/dbgen$ ./dbgen -s 1

     说明:-s 代表数据规模因子,1 代表产生1G的数据量

     在当前文件夹下生成的8个.tbl文件就是我们所需要的数据。

二、测试

      在hive上建8个表 ( 由于hive自带的脚本dbgen/dss.ddl和hive的语法不符,所以不能直接用这个脚本建表,如果对hive语法熟练的话可以直接对其进行修改,另存为dss.ddl.hive文件 )。在此介绍另外一种方法建表。

      下载最新的TPC-H_on_Hive命令包

       网址:https://issues.apache.org/jira/browse/HIVE-600

       解压后,将之前生成的8个表 ( 即.tbl文件) 放在data目录下 

       现在可以先对tpch目录下的命令试着执行一下

       命令:ubuntu@ubuntu01:~$ hive -f /opt/TPC-H_on_Hive/tpch/q1_pricing_summary_report.hive

       到现在为止,已经可以成功执行测试程序了,但进入hive查看表项会发现,表中没有数据。这是因为执行上一条命令,会创建相关的数据表,但还没有往数据表中导入数据。现在,就要把之前生成的数据导入到创建好的8个表中。表和数据文件是一一对应的,按名字就能区分出来。

       命令: ubuntu@ubuntu01:~$ hive

       命令: hive > LOAD DATA LOCAL INPATH '/opt/TPC-H_on_Hive/data/customer.tbl' INTO TABLE customer ;

       这只是对customer这个表加载了数据,剩下的7个表也用同样的方法加载。

      万事具备,只欠东风。下面就可以测试啦。

      命令:ubuntu@ubuntu01:~$ hive -f /opt/TPC-H_on_Hive/tpch/q1_pricing_summary_report.hive

      ------------------------分割线-----------------------

      以上呢,是我自己摸索的方法,但是偶然看到TPC-H_on_Hive/data目录下有个tpch_prepare_data.sh文件,执行这个文件可以在HDFS上建立每个表的目录,然后加载数据就行啦,不过我还没试,有兴趣的话可以试试这个,应该不会像第一种方法那样走弯路。

本文转载自:http://my.oschina.net/u/1412751/blog/351884

共有 人打赏支持
vieky
粉丝 12
博文 55
码字总数 47106
作品 0
长沙
高级程序员
私信 提问
SQL on Hadoop 和 SQL off Hadoop 介绍

  【IT168 资讯】最初,Apache Hadoop被视为是批处理非结构化数据的平台。从本质上讲,Hadoop是一种存储和处理大量数据的廉价又可靠的方式,吸引了更多的客户。   随着时间的推移,Data ...

it168网站
2017/11/07
0
0
Apache Kylin v2.0.0 Beta 尝鲜版上线

Apache Kylin 社区于日前宣布:Apache Kylin v2.0.0 Beta 版发布。 此次 Apache Kylin v2.0.0 Beta 升级的功能有: (KYLIN-1875)支持雪花数据模型 (KYLIN-2467)支持TPC-H查询 (KYLIN-2...

王练
2017/02/28
1K
11
Apache Hawq功能测试脚本

一. TPC-H编译 1.下载工具TPC-H 下载地址 2. 拷贝生成makefile,并修改makefile 修改makefile 3.编译 4.生成数据 5.创建数据库以及相关表格语句 6.查询语句在queries目录下 22个 二、创建表空...

Lynn_Yuan
2018/08/16
0
0
Hive格式 Parquet与ORC性能测试报告

一、环境说明 Hadoop集群:使用测试Hadoop集群,节点: hadoop230 hadoop231 hadoop232 hadoop233 这几台机器配置一样,具体参数可参考如下: CPU数量:2个 CPU线程数:32个 内存:128GB 磁盘...

GordonNemo
2018/11/13
0
0
TPC-H Q1 测试显示 PgSQL 11 JIT 带来 30% 性能提升

PostgreSQL 11 正式版很快就能和我们见面了,该版本有一个和性能提升相关的重要特性 —— 对 JIT(just-in-time) 编译的支持。今年3月份我们曾报道过,在 TPC-H 等数据库测试中,发现用于 Po...

局长
2018/09/14
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

Linux下端口转发工具rinetd介绍

linux下简单好用的工具rinetd,实现端口映射/转发/重定向,针对TCP协议,不支持UDP。 官网地址 http://www.boutell.com/rinetd 里面介绍及使用齐全。 使用场景举例: 阿里云内网Redis连接问题...

ouhoo
11分钟前
1
0
Oracle学习日志-5(算数运算符,比较运算符和逻辑运算符)

因为有编程基础,所以对于这一章还是很好理解,只需要注意对NULL的运算。 操作的表格 算数运算符 查询商品名字和商品售价,并商品售价乘2 SELECT product_name,sale_price * 2 AS "sale_pri...

白话
24分钟前
1
0
搜索引擎(Lucene介绍、分词器详解)

Lucene介绍 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简...

这很耳东先生
28分钟前
0
0
quartz详细介绍

quartz常用api Scheduler 调度程序交互的主要API。 Job 希望由调度程序执行的组件实现的接口。 JobDetail 用于定义作业的实例。 JobDataMap 可以包含不限量的序列化数据,在job运行的时候可以...

大笨象会跳舞吧
29分钟前
1
0
kotlin使用jackson序列化enum

默认情况下,我们序列化与反序列化enum是它的name,事实上大部分情况下我们需要序列化的是我们自定义的value,那应该怎么做呢? 这种情况下我们就需要@JsonValue与@JsonCreator data class U...

weidedong
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部