Spark做TPC-DS性能测试

简介: Spark做TPC-DS性能测试

背景


最近由于在做上云的工作,并且公司离线部分引擎是Spark,所以做了一次基于TPC-DS性能比对测试。


云上和云下的机器主要不同如下:

不同点

云上

云下

存储

OSS

HDFS

机器CPU

Intel®Xeon®Platinum 8269CY CPU@2.50GHz

Intel®Xeon®Gold 6626 CPU@2.70GHz

TPC-DS是什么


如下解释:

TPC-DS is a data warehousing benchmark defined by the Transaction Processing Performance Council (TPC)
The “DS” in TPC-DS stands for “decision support.”

TPC-DS数据来源


进行TPCDS的数据来源需要我们自己生产,参考Spark Commiter和PMC的项目 spark-tpcds-datagen,具体的生产数据命令如下:

nohup ./bin/dsdgen --output-location /tmp/spark-tpcds-data --overwrite --scale-factor 600 --partition-tables --num-partitions 100 &>dsdgen.log &

生产了大约200GB的数据


TPC-DS的SQL来源


目前很多引擎都自带了TPC-DS的sql语句(如Trino,Spark),目前我们参考Spark的提供的sql语句如下:


TPC-DS v1.4


TPC-DS v2.7


运行TPC-DS Benchemark


由于spark内置的TPCDSQueryBenchmark.scala里是local模式运行,所以我们得修改成如下:

vi  spark/sql/core/src/test/scala/org/apache/spark/sql/execution/benchmark/TPCDSQueryBenchmark.scala
  override def getSparkSession: SparkSession = {
    val conf = new SparkConf()
//      .setMaster("local[1]")
      .setAppName("test-sql-context")
//      .set("spark.sql.parquet.compression.codec", "snappy")
//      .set("spark.sql.shuffle.partitions", "4")
//      .set("spark.driver.memory", "3g")
//      .set("spark.executor.memory", "3g")
//      .set("spark.sql.autoBroadcastJoinThreshold", (20 * 1024 * 1024).toString)
//      .set("spark.sql.crossJoin.enabled", "true")

同时还得修改脚本spark-tpcds-datagen/bin/report-tpcds-benchmark,如下:

vi spark-tpcds-datagen/bin/report-tpcds-benchmark
\\ 删除以下四个配置
--conf spark.ui.enabled=false          \
  --conf spark.master=local[1]           \
  --conf spark.driver.memory=60g         \
  --conf spark.sql.shuffle.partitions=32 \

用如下命令进行测试

nohup ./bin/report-tpcds-benchmark /tmp/spark-tpcds-data /tmp/benchmark-result &> benchmark.log &

结果


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIDFoehO-1685524759310)(null)]


作图的工具可以参考:

3.png

其他有意思的文章如下:


dsdgen


tpcds-kit


warehouse-performance-record

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
11天前
|
分布式计算 Hadoop Scala
Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
【4月更文挑战第13天】Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
17 0
|
7月前
|
分布式计算 资源调度 Hadoop
Spark on Yarn集群模式搭建及测试
Spark on Yarn集群模式搭建及测试
156 0
|
7月前
|
分布式计算 监控 Oracle
Spark Standalone环境搭建及测试
Spark Standalone环境搭建及测试
74 0
|
7月前
|
分布式计算 Java Scala
Spark Local环境搭建及测试
Spark Local环境搭建及测试
67 0
|
分布式计算 Java 关系型数据库
tigase在windows上安装并通过spark进行测试
关于即时通讯,现在各路APP基本都有,虽然不能说是核心,但是如果没有又总会觉的少点啥。 如果对即时通讯要求不高,且用户量不大,只是想要从无到有的话,可以直接使用现有的服务即可,有不少免费的足够支持小量用户的要求。但是如果用户量稍微较大,且需要一些定制服务又不想受制于人,那么搭建自己的即时通讯服务器可能是你最终的选择。但是,从头开发肯定是不可能的。
tigase在windows上安装并通过spark进行测试
|
SQL 存储 弹性计算
如何使用AnalyticDB for PostgreSQL 6.0 进行TPC-DS 1TB数据的测试
TPC-DS是事务处理性能委员会( Transaction ProcessingPerformance Council )制定的基准程序之一。TPC-DS测试涉及24张表,工作负载包含99个SQL,主要目的是评价特定查询的决策支持能力。
4190 0
如何使用AnalyticDB for PostgreSQL 6.0 进行TPC-DS 1TB数据的测试
|
消息中间件 Shell 测试技术
windows 本地测试spark streaming + kafka direct api
windows 本地测试spark streaming + kafka direct api 卡在如下信息出: “Kafka scala consumer marked as dead for group” 1.环境: kafka server为集群,连接时使用的是hostname:9092方法去连接,程序也不报错, 就是卡在上面的信息出,没有输出。
1583 0
|
分布式计算 大数据 测试技术