如何运行TPCH和TPCDS
背景
如何评估大数据的性能?当前主流的性能测试项有TPCH、TPCDS,其中TPCDS逐渐成了业界公认的性能测试标准。对应的工具包可以在官网上下载(http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp),本文记录了从零开始执行tpch和tpcds测试套的过程。
一. 测试前准备
OBS的存储成本要远低于普通磁盘,通常我们先买一台ECS,通过tpch和tpcds上找到的工具生成数据,然后传到obs桶上
1. 购买1台ecs,由于性能测试需要的数据量较大,需要添加数据盘。而数据盘要格式化之后才能使用。可参考ecs的资料https://support.huaweicloud.com/qs-ecs/zh-cn_topic_0085634797.html
fdisk -u /dev/vdb p n p ... w mkfs.ext4 /dev/vdb1 cp /etc/fstab /etc/fstab.bak echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab mount /dev/vdb1 /mnt
2. 上传数据生成脚本,生成tpch/tpcds数据
tpch:nohup ./dbgen -s 1000 > temp.log 2>&1 & tpcds:nohup ./dsdgen -scale 1000 > temp.log 2>&1 &
由于数据生成工具只能占用单核cpu,整体生成速度会很慢,可以通过分片参数,起多个任务来加速数据生成。
for((i=1;i<=38;i++)); do nohup ./dsdgen -scale 1000 -dir /data1/tpcds/tpcds1000x -TERMINATE N -parallel 38 -child $i -force Y -table web_sales & done
3. 将生成的数据传到obs
wget https://obs-community.obs.cn-east-3.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz ./obsutil config -i=***ak**** -k=***sk****-e=obs.cn-east-3.myhuaweicloud.com ./obsutil cp obs://dli/metadata_test/a=1/ obs://dli/metadata_test/a=999/ -r -flat -f
二. 在DLI上执行性能测试
数据准备后,就可以开始准备执行性能测试。这里以DLI数据湖探索(https://console.huaweicloud.com/dli/)为例。
1. 创建表,建表语句从工具生成的列表拿到后,需要做一些修改:
1.1 指定数据格式csv
1.2 指定数据位置:path 'obs://bucket-name/tpch/lineitem'
1.3 指定分隔符:工具在默认情况下是通过“|”来分隔数据的,指定delimiter="|"
create table LINEITEM ( L_ORDERKEY BIGINT, L_PARTKEY BIGINT, L_SUPPKEY BIGINT, L_LINENUMBER INTEGER, L_QUANTITY DECIMAL(15, 2), L_EXTENDEDPRICE DECIMAL(15, 2), L_DISCOUNT DECIMAL(15, 2), L_TAX DECIMAL(15, 2), L_RETURNFLAG string, L_LINESTATUS string, L_SHIPDATE DATE, L_COMMITDATE DATE, L_RECEIPTDATE DATE, L_SHIPINSTRUCT string, L_SHIPMODE string, L_COMMENT string ) using csv OPTIONS(path 'obs://bucket-name/tpch/lineitem',delimiter="|");
2. 使用csv的表,使用成本和计算成本都会比压缩格式高很多,通常需要转换成parquet或者carbon格式
create table LINEITEM ( L_ORDERKEY BIGINT, L_PARTKEY BIGINT, L_SUPPKEY BIGINT, L_LINENUMBER INTEGER, L_QUANTITY DECIMAL(15, 2), L_EXTENDEDPRICE DECIMAL(15, 2), L_DISCOUNT DECIMAL(15, 2), L_TAX DECIMAL(15, 2), L_RETURNFLAG string, L_LINESTATUS string, L_SHIPDATE DATE, L_COMMITDATE DATE, L_RECEIPTDATE DATE, L_SHIPINSTRUCT string, L_SHIPMODE string, L_COMMENT string ) using parquet
3. 然后将数据插入压缩格式对应的新表中
insert overwrite table lineitem select * from tpch.lineitem;
4. 然后依次执行tpch、tpcds中的sql语句,可以参考附件tpch_sql.txt,tpcds.rar(由于tpcds的语句较多,打包在压缩包中)。
- 点赞
- 收藏
- 关注作者
评论(0)