使用TPC-H對Hive測試

最近因爲工做要求,須要對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稍微有了點了解,再也不是一頭霧水了。親手實踐一遍仍是有好處滴,「紙上得來終覺淺,絕知此事要躬行」嘛,好了,很少說了,就寫到這,不足的地方還請批評指正,工做去啦。

相關文章
相關標籤/搜索