Amazon Redshift是亚马逊云科技的数据仓库产品,可以运用于各种不同的大数据场景中,实际场景中往往有一些复杂的任务依赖和性能的不确定性。本博客提供CDK代码,其中会生成Cloudformation模版搭建一个简单的环境,包括一个Redshift集群,一个Glue Workflow(见下图)包含建立Redshift表、加载TPC-DS数据到表、顺序运行TPC-DS 99个查询和并行运行TPC-DS 99个查询任务。用户需要先自行生成TPC-DS数据到S3以‘|’分隔的CSV文件。然后把S3路径提供给Cloudformation,运行完后会生成测试报告到S3。
本博客可用来:
下载CDK代码并在 RedshiftBenchmark 路径下运行CDK CLI列举当前可部署的Stack
$ cdk ls
会返回以下可部署的Stack
repository # S3 桶用来存储材料
vpc-stack # VPC用来放Redshift
redshift-stack # Redshift 集群
benchmark-workflow # Glue workflow包含Redshift压测任务使用CDK CLI 部署Cloudformations使用默认参数
$ cdk deploy benchmark-workflow如果需要部署自定义参数,例子如下
$ cdk deploy benchmark-workflow \
--parameters benchmark-workflow:numRuns=2 \
--parameters benchmark-workflow:parallel=100所有可以修改的参数,其中benchmark-workflow:tpcdsDataPath是需要自定义的,其他都可以选择默认:
benchmark-workflow:tpcdsDataPath (Required)存储TPCDS的S3路径,默认是 s3://redshift-downloads/TPC-DS/2.13/3TB/(桶在us-east-1,只有us-east-1能直接部署)redshift-stack:rsInstanceType Redshift节点类型,默认ra3.xlplusredshift-stack:rsSize Redshift 集群大小,默认是 2redshift-stack:username Redshift super user 用户名,默认是 adminredshift-stack:password Redshift super user 密码,默认是 Admin1234benchmark-workflow:parallel 并行测试的并行度,默认是 10benchmark-workflow:numRuns 测试的轮次,默认是 2benchmark-workflow:numFiles 需要测试的SQL个数,一共有99个但不一定需要全部测试,默认是 99到Amazon Glue的控制台的workflow中可以看到名字为redshift-benchmark的workflow如下,可以直接运行整个workflow也可以到Job页面运行单个Job,以下会逐一介绍如何运行单个任务。
到Glue的控制台,在Job页面找到名字为tpcds-benchmark-create-tables和tpcds-benchmark-load-tables任务,前者是建表任务,后者是使用copy从S3加载数据(S3需要已经有数据)。之前的CDK已经把TPC-DS的DDL、导入copy命令和99个查询放在S3里面,路径也自动的更新到Glue Job的传入参数上面,可以直接运行。也可以修改传入参数运行自定义的SQL。
到Glue的控制台,在Job页面找到名字为tpcds-benchmark-sequential-report任务,本任务会使用循环顺序的执行99个TPC-DS查询(可通过修改CDK参数或者Glue Job作业参数来自定义)。执行完成后执行每个语句的运行时间会输出到Glue Job日志和CDK默认生成的S3桶中(prefix为report/)。
可修改的作业参数如下:
到Glue的控制台,在Job页面找到名字为tpcds-benchmark-concurrent-report任务,本任务会使用benchmark-workflow:parallel(或者Glue Job –parallel_level )参数指定的数值来并发的运行查询,顺序的执行每次并发。比如parallel为10,查询个数为99,则本任务会先同时提交1-10查询,运行完后再同时提交11-20查询依次进行。执行完成后执行每个语句的运行时间会输出到Glue Job日志和CDK默认生成的S3桶中(prefix为report/)。也可以通过修改CDK或者Glue Job的参数来自定义,可修改的作业参数参照顺序查询测试截图。
当Glue测试任务完成后,有两种方式可以拿到测试报告:
tpcds-benchmark-sequential-report, tpcds-benchmark-concurrent-report 任务的日志本CDK生成的环境可以作为一个初始环境,基于本环境可以再深入自定义。比如:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3153691/ ,如需转载,请注明出处,否则将追究法律责任。