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

相关文章
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
207 1
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
273 0
|
分布式计算 Shell Linux
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
269 0
|
分布式计算 Java 测试技术
Spark 单元测试报Error:(26, 16) java: 程序包sun.misc不存在
Spark 单元测试报Error:(26, 16) java: 程序包sun.misc不存在
619 0
|
分布式计算 Hadoop Scala
Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
【4月更文挑战第13天】Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
819 0
|
分布式计算 资源调度 Hadoop
Spark on Yarn集群模式搭建及测试
Spark on Yarn集群模式搭建及测试
956 0
|
分布式计算 监控 Oracle
Spark Standalone环境搭建及测试
Spark Standalone环境搭建及测试
369 0
|
10月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
511 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1144 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
631 79
下一篇
开通oss服务