最近因爲工做要求,須要對Hive進行一下測試。在一篇論文中看到使用TCP-H,上網查了一下還算是比較靠譜的一個基準測試程序,因此決定拿來一試。網上關於這方面的博客貌似不多(能力有限,沒找到不少),經過本身摸索,寫下這個東東,共享之,也但願一樣關注這個方面的人可以共同討論。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.aspci
二、將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文件就是咱們所須要的數據。
2、測試
在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上創建每一個表的目錄,而後加載數據就行啦,不過我還沒試,有興趣的話能夠試試這個,應該不會像第一種方法那樣走彎路。
3、總結
作完這個測試後,感受對TPC-H benchmark和hive稍微有了點了解,再也不是一頭霧水了。親手實踐一遍仍是有好處滴,「紙上得來終覺淺,絕知此事要躬行」嘛,好了,很少說了,就寫到這,不足的地方還請批評指正,工做去啦。