Spark做TPC-DS性能测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 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进行规格选择与性能压测。
相关文章
|
2月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
48 1
|
2月前
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
54 0
|
6月前
|
分布式计算 Shell Linux
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
70 0
|
7月前
|
分布式计算 Java 测试技术
Spark 单元测试报Error:(26, 16) java: 程序包sun.misc不存在
Spark 单元测试报Error:(26, 16) java: 程序包sun.misc不存在
139 0
|
7月前
|
分布式计算 Hadoop Scala
Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
【4月更文挑战第13天】Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
293 0
|
分布式计算 资源调度 Hadoop
Spark on Yarn集群模式搭建及测试
Spark on Yarn集群模式搭建及测试
356 0
|
分布式计算 监控 Oracle
Spark Standalone环境搭建及测试
Spark Standalone环境搭建及测试
138 0
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
142 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
2月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
73 0
|
2月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
48 0