如何运行TPCH和TPCDS

举报
汤包x 发表于 2020/06/22 22:02:31 2020/06/22
【摘要】 背景如何评估大数据的性能?当前主流的性能测试项有TPCH、TPCDS,其中TPCDS逐渐成了业界公认的性能测试标准。对应的工具包可以在官网上下载(http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp),本文记录了从零开始执行tpch和tpcds测试套的过程。一. 测试前准备OBS的存储成本要远...

背景

如何评估大数据的性能?当前主流的性能测试项有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/)为例。

               image.png

      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的语句较多,打包在压缩包中)。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。