在作完Running TPC-H on Hive后,又紧接着使用TPC-H对Pig进行了测试。有了对Hive测试的基础,在Pig上进行测试就相对简单多了,基本上都是“拿来主义”,都是现成的。须要使用的8个测试表以及测试数据都已经在Hive测试中生成过了,因此在Pig上就跑一遍测试程序看看结果就能够啦。下面,就来讲说TPC-H在Pig上测试的具体步骤。web
系统环境:apache
6个结点,ubuntu01为master结点,ubuntu02-ubuntu06为slave结点ubuntu
Ubuntu 12.04 LTSoop
Hadoop-1.2.1测试
Hive-0.13.1ui
tpch_2_14_3spa
1、安装配置orm
一、下载TPC-H源码tpch_2_14_3.zip,用来生成测试数据ip
网址:http://www.tpc.org/tpch/default.asphadoop
二、将TPC-H压缩包解压,本文中解压目录为:/opt/
命令:ubuntu@ubuntu01:~$ unzip tpch_2_14_3.zip -C /opt/
三、进入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
四、修改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
五、执行makefile
命令:ubuntu@ubuntu01:/opt/dbgen$ make
六、生成须要用的数据
命令:ubuntu@ubuntu01:/opt/dbgen$ ./dbgen -s 1
说明:-s 表明数据规模因子,1 表明产生1G的数据量
在当前文件夹下生成的8个.tbl文件就是咱们所须要的数据。
七、创建表,以及向表中加载数据
在TPC-H_on_Hive/data目录下有个tpch_prepare_data.sh文件,经过查看这个文件中的语句可知,运行这个命令能够在HDFS上创建咱们所须要的8个数据表,而且将本地产生的数据文件拷贝到HDFS中。
命令:ubuntu@ubuntu01:/opt/TPC-H_on_Hive/data$ ./tpch_prepare_data.sh
--------------------------------分割线-------------------------------------
若是已经进行过Hive测试的话,上边7个步骤都是能够省略的,就像我一开始说的,Pig上边的这套和Hive很大程度上是通用的 ( 不了解的能够看个人上一篇博客 )。从这开始,就要进入Pig测试正题了。
2、Pig测试
八、下载TPC-H_on_Pig
网址:https://issues.apache.org/jira/browse/PIG-2397
下载以后,一样解压到/opt/目录下,将以前生成的8个表拷贝到TPC-H_on_Pig文件夹中。
九、测试
Pig测试命令:ubuntu@ubuntu01:/opt/TPC_H_on_Pig/$ ./run_tpch.sh hdfs://ubuntu01:9000/tpch/ hdfs://ubuntu01:9000/user/ 5
逐个解释一下每一个参数的含义:
第一个:./run_tpch.sh,这个就很少说了;
第二个:hdfs://ubuntu01:9000/tpch/ 这是输入数据的路径,但要注意的是这个路径是HDFS上的路径;
第三个:hdfs://ubuntu01:9000/user/ 这是输出数据的路径,一样也是HDFS上的文件路径;
第四个:5 这个参数表示的是reducers的个数,能够根据本身系统环境的状况来决定
运行这个命令就万事大吉了,但因为测试时间可能会达到3个小时左右,因此最好将terminal中打印的信息输入到一个文本文件,这样能够方便查看。实现这种输出其实很简单,只须要使用tee命令就能够,在这里咱们采用追加的方式向文本文件输出,命令以下:
命令:ubuntu@ubuntu01:/opt/TPC_H_on_Pig/$ ./run_tpch.sh hdfs://ubuntu01:9000/tpch/ hdfs://ubuntu01:9000/user/ 5 | tee -a q1~q22_Pig.txt
其中,q1~q22_Pig.txt 表明输出文本文件名。
3、总结
因为以前对Pig也是十分不了解,因此就跑去看README。对README里边的命令解释真心无语。原文中对于单个SQL脚本文件的给出的运行命令是
${PIG_HOME}/bin/pig $hadoop_opts -param input=<input_dir> -param output=<output_dir> -param reducers=<reducers> -f queries/<script_name>
其余参数都好理解,惟独-param这个参数我是真不明白啥意思。看了一天都毫无进展,实在不了解它到底表明什么。就在准备撒手不干的时候,抱着试一试的心态就直接使用了 '-param',结果还真是这样,直接用,当场就一脸黑线啊有木有,可怜我一成天的时间啊,都浪费在这上面了。之后就吸收教训了,管他知不知道,都试试,没准就碰上了呢。