searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

测试环境的tpcds压测记录

2023-05-29 08:22:10
40
0

环境信息

机器: xx.xx.xx.xx

操作路径:

/data01/tpcds/tpcds0506

目录下文件夹用途说明

data_1000g,数据存储目录,这里是1T,如果是10T,需要新建data_10000g

ddl,建表语句,脚本执行过程中会调用sql建表

DSGen-ali,工具目录,和官网tpcds包类似,里面有模版和工具造数据

logs_1000,日志目录,相关测试日志记录在这里

patches,补丁文件,对于sql的特定小问题的处理

queries,查询测试语句的目录

results,pt测试的数据结果目录

shell,新建的目录,放置了一些测试的脚本

数据生成

1. 生成pt数据

这里生成1T数据,分为10份,开启多个进程处理,

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/gen_pt_data.sh

nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 1 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 1 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 2 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 2 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 3 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 3 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 4 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 4 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 5 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 5 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 6 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 6 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 7 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 7 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 8 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 8 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 9 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 9 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 10 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 10 -FORCE &

2. 生成mt数据

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/tools/gen_mt_data.sh

这里执行脚本需要进入tools目录下,因为会默认在当前目录寻找tpcds.idx文件,生成pt数据的时候可以指定相对路径,这里不行

这里生成4份数据,两次测试使用

nohup sh gen_mt_data.sh 1 &
nohup sh gen_mt_data.sh 2 &
nohup sh gen_mt_data.sh 3 &
nohup sh gen_mt_data.sh 4 &

3. 生成pt查询

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/tools/create_pt_query.sh

脚本中stream数字设置为9,生成9个大sql,一个做单独测试,另外8个分两批做并发测试

生成后的查询文件路径:

/data01/tpcds/tpcds0506/queries/pt_queries

里面有query_0-query_8,9个sql文件

生成的大sql脚本,进行拆解处理,分成一个个小sql文件,一共是9*99个文件

sh /data01/tpcds/tpcds0506/DSGen-ali/tools/create_pt_query_splite99.sh

拆解后,会在上面pt_queries路径下生成stream0-stream8,9个子查询文件夹

4. 生成mt查询

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/tools/create_mt_query.sh

这里也是生成4份查询sql,分别对应上面生成的4份数据

数据导入

1. pt数据导入

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_pt_txt.sh

先把生成的数据导入到常规txt库

然后把数据从txt库复制到orc库,这里导入的orc库是分区的

/data01/tpcds/tpcds0506/shell/data_load_pt_orc.sh

还有个没有分区的库,后面没看到使用的地方

/data01/tpcds/tpcds0506/shell/data_load_pt_orc_nopar.sh

2. mt数据导入

mt数据导入的表,和pt导入的数据的表不是同一个表

mt数据是查询处理后再插入到pt的表中,后面mt测试才会用到

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh

数据测试

1. pt测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/stream_queries_run.sh

这里脚本中指定了测试pt_queries/stream0下面的sql文件,做单独测试

Stream_0 run time: 13892.530 seconds

2. tt1测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/pt_stream.sh

执行命令: nohup sh pt_stream.sh 1 &

这里会并发查询pt_queries/stream1-stream4下面的sql

Stream_1 run time: 12635.997 seconds.

Stream_2 run time: 12468.474 seconds.

Stream_3 run time: 12759.545 seconds.

Stream_4 run time: 12485.486 seconds.

3. mt1测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/run_maintenance.sh

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/mt_stream.sh

执行命令: nohup sh mt_stream.sh 1 &

Maintenance test 1 finished. Time token: 2:10:00, 7800.801 second

4. tt2测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/pt_stream.sh

执行命令: nohup sh pt_stream.sh 1 &

这里会并发查询pt_queries/stream5-stream8下面的sql

Stream_5 run time: 12629.399 seconds.

Stream_6 run time: 12574.020 seconds.

Stream_7 run time: 12605.455 seconds.

Stream_8 run time: 12575.210 seconds.

5. mt2测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/run_maintenance.sh

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/mt_stream.sh

执行命令: nohup sh mt_stream.sh 1 &

Maintenance test 2 finished. Time token: 1:04:03, 3843.419 seconds

遇到的问题

批量删除支持

默认hive不支持批量删除,需要把表修改为事务支持,如下

ALTER TABLE tpcds_1000_orc.date_dim SET TBLPROPERTIES ('transactional'='true');

修改数据库中所有表,执行脚本

sh /data01/tpcds/tpcds0506/shell/alter_transactional.sh

HiveInputFormat查询问题

加了事务支持后,mt测试出现新的问题

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to create RecordUpdater for HiveOutputFormat that does not implement AcidOutputFormat

修改了run_maintenance.sh脚本,hive执行命令中添加

--hiveconf "hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat"

说明:tt测试里面是使用spark-sql跑的,没有出现这个问题

表存储格式问题

给的标准mt查询模版中,以LF开头的表基本都是下面这种开头

CREATE table crv

USING parquet

TBLPROPERTIES("parquet.compression"="SNAPPY","transactional"="true")

问题:首先这里using parquet不支持,然后修改为STORED AS PARQUET后,建表没问题,但是hive查询不支持parquet这种格式,需要orc格式才行,因此修改后如下

CREATE table csv

TBLPROPERTIES("transactional"="true")

0条评论
0 / 1000
奔驰上树
4文章数
0粉丝数
奔驰上树
4 文章 | 0 粉丝
奔驰上树
4文章数
0粉丝数
奔驰上树
4 文章 | 0 粉丝
原创

测试环境的tpcds压测记录

2023-05-29 08:22:10
40
0

环境信息

机器: xx.xx.xx.xx

操作路径:

/data01/tpcds/tpcds0506

目录下文件夹用途说明

data_1000g,数据存储目录,这里是1T,如果是10T,需要新建data_10000g

ddl,建表语句,脚本执行过程中会调用sql建表

DSGen-ali,工具目录,和官网tpcds包类似,里面有模版和工具造数据

logs_1000,日志目录,相关测试日志记录在这里

patches,补丁文件,对于sql的特定小问题的处理

queries,查询测试语句的目录

results,pt测试的数据结果目录

shell,新建的目录,放置了一些测试的脚本

数据生成

1. 生成pt数据

这里生成1T数据,分为10份,开启多个进程处理,

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/gen_pt_data.sh

nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 1 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 1 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 2 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 2 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 3 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 3 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 4 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 4 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 5 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 5 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 6 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 6 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 7 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 7 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 8 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 8 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 9 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 9 -FORCE &
nohup tools/dsdgen -DIR /data01/tpcds/tpcds0506/data_1000g/pt_data/child1 -SCALE 10 -TERMINATE N -PARALLEL 10 -DISTRIBUTIONS tools/tpcds.idx -CHILD 10 -FORCE &

2. 生成mt数据

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/tools/gen_mt_data.sh

这里执行脚本需要进入tools目录下,因为会默认在当前目录寻找tpcds.idx文件,生成pt数据的时候可以指定相对路径,这里不行

这里生成4份数据,两次测试使用

nohup sh gen_mt_data.sh 1 &
nohup sh gen_mt_data.sh 2 &
nohup sh gen_mt_data.sh 3 &
nohup sh gen_mt_data.sh 4 &

3. 生成pt查询

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/tools/create_pt_query.sh

脚本中stream数字设置为9,生成9个大sql,一个做单独测试,另外8个分两批做并发测试

生成后的查询文件路径:

/data01/tpcds/tpcds0506/queries/pt_queries

里面有query_0-query_8,9个sql文件

生成的大sql脚本,进行拆解处理,分成一个个小sql文件,一共是9*99个文件

sh /data01/tpcds/tpcds0506/DSGen-ali/tools/create_pt_query_splite99.sh

拆解后,会在上面pt_queries路径下生成stream0-stream8,9个子查询文件夹

4. 生成mt查询

脚本路径:

/data01/tpcds/tpcds0506/DSGen-ali/tools/create_mt_query.sh

这里也是生成4份查询sql,分别对应上面生成的4份数据

数据导入

1. pt数据导入

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_pt_txt.sh

先把生成的数据导入到常规txt库

然后把数据从txt库复制到orc库,这里导入的orc库是分区的

/data01/tpcds/tpcds0506/shell/data_load_pt_orc.sh

还有个没有分区的库,后面没看到使用的地方

/data01/tpcds/tpcds0506/shell/data_load_pt_orc_nopar.sh

2. mt数据导入

mt数据导入的表,和pt导入的数据的表不是同一个表

mt数据是查询处理后再插入到pt的表中,后面mt测试才会用到

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh

数据测试

1. pt测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/stream_queries_run.sh

这里脚本中指定了测试pt_queries/stream0下面的sql文件,做单独测试

Stream_0 run time: 13892.530 seconds

2. tt1测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/pt_stream.sh

执行命令: nohup sh pt_stream.sh 1 &

这里会并发查询pt_queries/stream1-stream4下面的sql

Stream_1 run time: 12635.997 seconds.

Stream_2 run time: 12468.474 seconds.

Stream_3 run time: 12759.545 seconds.

Stream_4 run time: 12485.486 seconds.

3. mt1测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/run_maintenance.sh

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/mt_stream.sh

执行命令: nohup sh mt_stream.sh 1 &

Maintenance test 1 finished. Time token: 2:10:00, 7800.801 second

4. tt2测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/pt_stream.sh

执行命令: nohup sh pt_stream.sh 1 &

这里会并发查询pt_queries/stream5-stream8下面的sql

Stream_5 run time: 12629.399 seconds.

Stream_6 run time: 12574.020 seconds.

Stream_7 run time: 12605.455 seconds.

Stream_8 run time: 12575.210 seconds.

5. mt2测试

脚本路径:

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/run_maintenance.sh

/data01/tpcds/tpcds0506/shell/data_load_mt.sh/mt_stream.sh

执行命令: nohup sh mt_stream.sh 1 &

Maintenance test 2 finished. Time token: 1:04:03, 3843.419 seconds

遇到的问题

批量删除支持

默认hive不支持批量删除,需要把表修改为事务支持,如下

ALTER TABLE tpcds_1000_orc.date_dim SET TBLPROPERTIES ('transactional'='true');

修改数据库中所有表,执行脚本

sh /data01/tpcds/tpcds0506/shell/alter_transactional.sh

HiveInputFormat查询问题

加了事务支持后,mt测试出现新的问题

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to create RecordUpdater for HiveOutputFormat that does not implement AcidOutputFormat

修改了run_maintenance.sh脚本,hive执行命令中添加

--hiveconf "hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat"

说明:tt测试里面是使用spark-sql跑的,没有出现这个问题

表存储格式问题

给的标准mt查询模版中,以LF开头的表基本都是下面这种开头

CREATE table crv

USING parquet

TBLPROPERTIES("parquet.compression"="SNAPPY","transactional"="true")

问题:首先这里using parquet不支持,然后修改为STORED AS PARQUET后,建表没问题,但是hive查询不支持parquet这种格式,需要orc格式才行,因此修改后如下

CREATE table csv

TBLPROPERTIES("transactional"="true")

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0