TPC-DS工具介绍及性能测试

这篇具有很好参考价值的文章主要介绍了TPC-DS工具介绍及性能测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. Hive-testbench工具介绍

TPC-DS:https://www.cnblogs.com/webDepOfQWS/p/10544528.html

由于原生态工具生产测试数据表存在bug,后续引进hive-testbench,可参考:
https://bbs.huaweicloud.com/blogs/260840

可在WPS共享文档https://yundoc.fin-shine.com/drive/group/442074/3256599

10.141.23.16 /home/appuser/hive-testbench下载 (配置项及脚本已修改)

1.1. 工具部署

执行tpcds-build.sh

(该工具需依赖包,执行后会提示,缺少什么安装什么依赖包)
一般需要这几个:yum -y install gcc gcc-c++

也可参考https://bbs.huaweicloud.com/blogs/260840

1.2. 脚本修改适配

修改脚本,直接使用hiveWSL环境没有配置beeline
文件: tpcds-setup.sh

echo "TPC-DS text data generation complete."

#HIVE="beeline -n hive -u 'jdbc:hive2://localhost:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=default'

"HIVE="hive"

# Create the text/flat tables as external tables. These will be later be converted to ORCFile.

修改不支持的参数注释 hive.optimize.sort.dynamic.partition.threshold

vim settings/init.sql

vim settings/load-flat.sql

vim settings/load-partitioned.sql

-- set hive.optimize.sort.dynamic.partition.threshold=0;

(目前发现仅在Cloudera中提供该配置:
https://docs.cloudera.com/cdp-private-cloud-base/7.1.5/ozone-storing-data/topics/ozone-config-work-with-Hive.html)

1.3. 生成测试数据

例如# 生成大小100G的数据集# 生成文件放置于/tmp目录下

bash tpcds-setup.sh 100 /tmp/100

可在HDFS上查看已生成的文件: sudo -u hdfs hadoop fs -du -h /tmp

TPC-DS工具介绍及性能测试

1.4. 执行99条SQL

路径:/hive-testbench-hdp3/sample-queries-tpcds

TPC-DS工具介绍及性能测试

方法一:

执行hive命令进入数据库执行命令界面,然后执行:

hive> use tpcds_bin_partitioned_orc_100;

hive> source query12.sql;

方法二:

使用脚本批量执行,通过/tmp/tpcds_bin_partitioned_orc_100.Log查看所有执行SQL结果。

(/tmp/tpcds_calc.log便于统计每条SQL执行的耗时情况,实际以上述结果为准!)

命令:sh autoTpcDs.sh

脚本内容:(仅参考,根据实际内容修改)

#!/bin/bash

base_dir='/home/appuser/hive-testbench/hive-testbench-hdp3/sample-queries-tpcds'

DBbase=tpcds_bin_partitioned_orc_100

for sql_num in `seq 1 99`

do

        if ((${sql_num}==18));then

                continue 1

        else

                echo "=============sql_num: query${sql_num} =============="

                hive -e "use ${DBbase};source ${base_dir}/query${sql_num}.sql"

                echo "=============sql_num: query${sql_num} ==============" >> /tmp/tpcds_calc.log

                grep 'Time taken' /tmp/${DBbase}.log|tail -1  >> /tmp/tpcds_calc.log 2>&1

        fi

done  >> /tmp/${DBbase}.log 2>&1

二. TPC-DS

2.1. TPC-DS编译

 yum install -y gcc gcc-c++ expect byacc flex bison

 地址: git clone git@github.com:gregrahn/tpcds-kit.git

 地址:git clone https://github.com/gregrahn/tpcds-kit.git

 进入tool目录下

 执行 make

2.2. 建表

 tools目录下 查看tpcds.sql文件,提供了基础的建表语句

2.3. 生成数据

2.3.1. 创建存放生成数据的目录

  mkdir /root/tpcdsdata

2.3.2. 生成指定大小的数据到创建的目录

./tools/dsdgen -SCALE 100GB -DIR ./data_100G

  -SCALE:指定生成数据量大小如:100GB200GB1TB100TB

2.4. 根据模板生成查询语句

 通过使用dsqgen命令根据TPC-DS提供的模板生成不同类型的SQL语句,TPC-DS默认支持以下模板:db2.tplnetezza.tploracle.tplsqlserver.tpl

for i in `seq 1 99`

do

  ./dsqgen  -DIRECTORY ../query_templates/ -TEMPLATE "query${i}.tpl" -DIALECT netezza -FILTER Y > ../sql/query${i}.sql

done

-DIRECTORYSQL模板的路径。 这个是查询模板的文件目录位置 …/query_templates/注意:因为query_templates只有99个查询模板,所以最多一次只能生成99个查询语句,但是如果生成多次,生成的99个查询语句是一样

-TEMPLATESQL模板的名称

-DIALECTinclude query dialect defintions found in < s >.tpl -DIALECT postgresql 是哪种数据库的查询语句

注意:DIALECT支持oracle,db2,sqlservernetezzaansi,但是没有postgresql。可以去query_templates文件目录下看是否有对应的模板文件,推荐netezzapg可以解析。

-FILTER:重定向到标准输出,即…/sql/query${i}.sql 是输出路径和文件类型。

2.5. 所有表分别导入数据

举例:psql -h 172.0.0.1 -p 31000 -U zhouwh -d testdb_100g -c "\COPY catalog_returns FROM '/home/appuser/tpcds-kit/data_100g/catalog_returns.dat' with DELIMITER as '|' NULL '' SEGMENT REJECT LIMIT 10000 ROWS;"

脚本:

#数据库名称

DB=testdb_100g

#dat文件路径

addr='/home/appuser/tpcds-kit/data_100g'

now=`date +%Y%m%d%H%M%S`

 

cd $addr

#编辑文件

total_cost1=0

for i in `ls *.dat|cut -d '.' -f 1`

do

        echo "###${i}开始编辑dat文件..."

        begin_time1=`date +%s.%N`

        sed -i -r 's/(.)$//g' ${addr}/${i}.dat

        rcsed=$?

        end_time1=`date +%s.%N`

        cost1=`echo "$end_time-$begin_time"|bc`

        total_cost1=`echo "$total_cost+$cost"|bc`

        if [ $rcsed -ne 0 ] ; then

                printf "###%s编辑失败\n" $i

        else

                printf "###%s编辑成功!cost耗时::%.2f秒,累计耗时::%.2f\n" $i $cost1 $total_cost1

        fi

done

 

#导入数据

total_cost=0

for i in `ls *.dat|cut -d '.' -f 1`

do

        echo "${i}开始导入数据..."

        begin_time=`date +%s.%N`

        psql -h 172.0.0.1 -p 31000 -U zhouwh -d ${DB} -c "\COPY ${i} FROM '${addr}/${i}.dat' with DELIMITER as '|' NULL '';" 2>/tmp/null

        rc=$?

        end_time=`date +%s.%N`

        cost=`echo "$end_time-$begin_time"|bc`

        total_cost=`echo "$total_cost+$cost"|bc`

        if [ $rc -ne 0 ] ; then

               printf "#####%s导入数据失败\n" $i

        else

               printf "######%s导入数据成功!耗时:%.2f秒,累计耗时:%.2f\n" $i $cost $total_cost

        fi

done

执行命令:

 nohup /home/appuser/tpcds-kit/exportdat.sh 2>/home/appuser/tpcds-kit/nohup.out &

2.6. 执行查询语句

#数据库名字

DB=testdb_100g

total_cost=0

now=`date +%Y%m%d%H%M%S`

for i in {1..99}

do

        echo "begin run Q${i}, sql/query$i.sql , `date`"

        begin_time=`date +%s.%N`

        psql -h 172.0.0.1 -p 31000 -U zhouwh -d $DB -f ./query${i}.sql > ./log/log_query${i}.out 2>/tmp/null

        rc=$?

        end_time=`date +%s.%N`

        cost=`echo "$end_time-$begin_time"|bc`

        total_cost=`echo "$total_cost+$cost"|bc`

        if [ $rc -ne 0 ] ; then

                printf "run Q%s fail, cost: %.2f, totalCost: %.2f, `date`\n" $i $cost $total_cost

        else

                ROWS=`grep 'rows' ./log/log_query${i}.out|tail -1`

                printf "###run Q%s succ, cost: %.2f, totalCost: %.2f, ROWS%s%s%s, `date`\n" $i $cost $total_cost $ROWS

        fi

done

2.7. 统计

cost时间快速统计

awk -F "," '{print $2}' 文件名 |awk -F ":" '{print $2}'

文章来源地址https://www.toymoban.com/news/detail-748155.html

到了这里,关于TPC-DS工具介绍及性能测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1-Locust性能测试工具介绍与安装

    locust是一个开源的压测工具,其官网地址是Locust - A modern load testing framework,通过编写Python代码,可以轻松实现百万级的并发,相对于我们熟悉的Jmeter来说,其对压测机的要求更低,而且使用locust和Python协程可以在一个User中实现多个api同时请求,更真实地模拟用户在前端页面

    2024年02月15日
    浏览(45)
  • KVM性能测试工具简单介绍 —— 筑梦之路

    虚拟化性能测试包括的范围 1)对cpu、内存、网络、磁盘IO性能测试; 2)虚拟机客户动态迁移时性能测试; 3)多种物理平台上的性能测试; 4)多个虚拟客户机运行在同一宿主机上时的性能测试。 性能测试指标 1)响应时间(response time) 2)吞吐量(throughput) 3)并发用户数

    2024年02月08日
    浏览(46)
  • 性能测试工具 IxChariot:Tcl脚本调用方法介绍

    ixChariot是一款功能强大的性能测试软件,可用来测试有线和无线性能,可以模拟真实应用程序流量,并提供关键性能指标,包括吞吐量、丢包、抖动、延迟、MOS等。本文简单介绍如何使用IxChariot Tcl API来实现自动化跑流。 一个基本的IxChariot测试网络主要包括三个部分: IxCha

    2024年02月08日
    浏览(166)
  • 几个影响 cpu cache 性能因素及 cache 测试工具介绍

    1 cache 性能及影响因素 1.1 内存访问和性能比较 有如下测试代码: 该测试代码预先分配大量内存,并与一个数组指针管理,使其可以通过数组索引访问该片申请内存,接着对该内存域进行预读写,使其在测试中不受 pagefault 影响测试结果。 该测试主要的测试点: 第一个循环按

    2024年02月14日
    浏览(45)
  • 使用TPC-H 进行GreatSQL并行查询测试

    GreatSQL-8.0.25-17 使用 TPC-H 生成数据 启动数据库后,可以检查配置是否生效 并行查询相关参数 启动数据库: 本次的工作在/data/tpch 可执行程序为dbgen,依赖一个数据分布文件dists.dss。可以将dbgen和dists.dss拷贝到同一目录使用 dss.ddl 和 dss.ri 文件 准备表结构和索引文件 dss.ddl 和 d

    2024年02月02日
    浏览(81)
  • 【工具/性能】开源的性能测试工具sysbench

    sysbensh是一个非常通用的benchmark工具,其提供多种方面的测试: cpu :提供一个简单的cpu benchmark测试 fileio:文件磁盘io的benchmark测试 memory:内存访问 benchmark测试 thread:线程调度 benchmark测试 mutex:POSIX的锁 benchmark测试 OLTP:数据库 benchmark测试,支持MySQL,Pgsql 默认支持MySQL,如

    2024年02月12日
    浏览(49)
  • Jmeter 性能测试入门 ——性能插件介绍

    目录 一、前言 1、首先,JMeter提供了三个基本的线程组,分别为: 2、其他线程组可以通过集成插件的方式使用,包括: 二、集成插件下载安装 1、下载地址:jmeter-plugins.org  2、安装:下载后文件为plugins-manager.jar格式,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即

    2024年02月02日
    浏览(60)
  • H5性能测试以及H5性能测试工具

    背景由于公司最近项目有一个H5测试项目,功能测试不用多说,但是H5性能测试是一个大难题,于是研究下H5性能测试,下面总结下,希望能帮助自己回顾项目也希望能帮到测友。 H5性能测试的常用指标: 白屏时间:用户首次看到网页内容的时间,即第一次渲染流程完成的时间

    2024年02月14日
    浏览(61)
  • jmeter 性能测试工具的使用(Web性能测试)

    1、下载 该软件不用安装,直接解压打开即可使用。 2、使用 这里就在win下进行,图形界面较为方便 在目录apache-jmeter-2.13bin 下可以见到一个jmeter.bat文件,双击此文件,即看到JMeter控制面板。主界面如下: 3、创建线程组 测试计划--右键——》添加——》hreads——》线程组 设

    2024年02月10日
    浏览(71)
  • Jmeter接口测试、性能测试详细介绍

    目录:导读 1、接口简介 2、接口测试简介 3、环境搭建 4、RESTful风格   5、Json说明 6、Jmeter简介 7、Jmeter环境搭建 8、Jmeter使用 8.1 Jmeter发GET请求 8.2线程组 8.2.1 并发执行 8.2.2 顺序执行 8.2.3 线程组-Ramp-Up Period(in senconds) 8.2.4 线程组-循环次数 8.2.5 线程组-调度器 8.2.6 setUp和te

    2023年04月20日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包