探索Spark SQL的性能:利用TPC-DS工作负载测试

探索Spark SQL的性能:利用TPC-DS工作负载测试

Apache Spark是一个广泛使用的分布式数据处理引擎,以其速度、易用性和高级分析功能而闻名,提供了Java、Scala、Python、R和SQL等多种API。其统一的优化引擎旨在以最小化磁盘I/O和CPU使用为原则,计算出执行工作负载的最佳方式。

本开源项目特别关注Spark SQL的性能评估,并使用了行业标准决策支持基准——TPC-DS进行测试。TPC-DS是一种衡量数据处理引擎性能的广泛应用标准,通过它,我们可以了解Spark在处理数据仓库应用需求方面的准备程度。Apache Spark v2.0完全支持TPC-DS基准中的九十九个决策支持查询。

本代码模式旨在帮助Spark开发者快速设置并运行TPC-DS基准,以便在自己的开发环境中进行测试。

完成此代码模式后,读者将理解以下内容:

  1. 如何设置TPC-DS工具包
  2. 如何生成不同规模因子的TPC-DS数据集
  3. 如何创建Spark数据库对象
  4. 如何在本地模式下运行TPC-DS基准查询并查看结果
  5. 扩大数据规模并在Spark集群上运行时要考虑的因素

架构图

工作流程

  1. 命令行:
    • 使用预先生成的数据集创建Spark表。
    • 运行全部或部分查询,监控结果。
  2. 笔记本:
    • 使用预先生成的数据集创建Spark表。
    • 运行全部查询集或单个查询。
    • 查看查询结果或性能概览。
    • 查看性能图表。

包含组件

  • Apache Spark:一个开放源码、快速且通用的集群计算系统
  • Jupyter Notebook:一个允许您创建和分享包含活代码、公式、可视化和解释性文本的在线文档的开源Web应用程序。

特色技术

  • 数据科学:系统和科学研究方法用于分析结构化和非结构化数据,提取知识和洞察。
  • 人工智能:人工智能可以应用于不同的解决方案空间,实现颠覆性的技术。
  • Python:一种编程语言,让您工作更快,更有效地集成您的系统。

实施步骤

有两种运行方式:

  1. 通过简单的交互式命令行shell脚本运行。
  2. 在Watson Studio中通过Jupyter笔记本运行。(参见“通过Watson Studio运行Jupyter笔记本”部分)

1. 克隆仓库

在终端中运行以下命令,将spark-tpc-ds-performance-test仓库克隆到本地:

$ git clone https://github.com/IBM/spark-tpc-ds-performance-test

2. 设置开发工具(可选)

由于许可限制,TPCDS工具包未作为此代码模式的一部分提供。相反,这里包含了1GB规模因子的预生成数据集。如果您想使用更大规模因子的数据集,或者探索学习完整的TPCDS生命周期,可以从TPC-DS下载工具包,并在开发环境中编译。

确保你的平台上已安装所需的开发工具。这个代码模式仅支持Mac和Linux平台。根据您的平台,运行以下命令来安装必要的开发工具:

  • Ubuntu:
    $ sudo apt-get install gcc make flex bison byacc git
    
  • CentOS/RHEL:
    $ sudo yum install gcc make flex bison byacc git
    
  • MacOS:
    $ xcode-select --install
    

为了编译工具包,你需要做以下事情:

  1. 解压缩下载的TPC-DS zip文件。
  2. 切换到<tpc-ds-toolkit-version>/tools目录。
  3. 清除构建环境。
  4. 根据您的平台编译。
cd <tpc-ds-toolkit-version>/tools
make clean
make OS=<platform>

3. 安装Spark

要成功运行TPC-DS测试,Spark必须已安装并预先配置为与Apache Hive元存储一起工作。

完成以下选项之一,以确保Spark正确安装和配置。完成后,修改bin/tpcdsenv.sh,将SPARK_HOME指向您的Spark安装目录。

  • 选项1 - 如果您已经安装了Spark,请检查您的Spark版本是否正确配置:

    $ cd $SPARK_HOME
    $ bin/spark-shell
    
      // 在scala提示符处输入以下命令
      scala> spark.conf
      scale> spark.conf.get("spark.sql.catalogImplementation")
      res5: String = hive
      scala> <ctrl-c>
    

    如果返回的是String = hive,那么您的安装是正确的。

  • 选项2 - 如果您没有安装Spark,或者当前安装不正确,建议从Spark 下载页面下载版本2.2.0。此版本应配置为与Apache Hive兼容,但请按照前面的选项检查。

  • 选项3 - 如果您没有Spark,或者想要自己构建,首先克隆Spark仓库:

    $ git clone https://github.com/apache/spark.git
    

    然后按照这些指南进行构建。请注意,构建Spark时需要包含Hive和支持JDBC。

4. 运行脚本

确保bin/tpcdsenv.sh脚本中的SPARK_HOME设置正确。

现在Spark已设置好,TPC-DS脚本下载完毕,我们可以通过bin/tpcdsspark.sh实用程序脚本来设置并开始运行TPC-DS查询。该驱动程序脚本允许您编译TPC-DS工具包,生成数据和查询,然后收集结果。

运行脚本并选择相应的选项:

 $ cd spark-tpc-ds-performance-test
 $ bin/tpcdsspark.sh 

==============================================
TPC-DS On Spark 菜单
----------------------------------------------
设置
 (1) 创建Spark表格
运行
 (2) 运行TPC-DS查询子集
 (3) 运行所有(99)TPC-DS查询
清理
 (4) 清理
 (Q) 退出
----------------------------------------------
请输入您的选择,后面跟上[回车]:
设置选项:“(1) - 创建Spark表格”

此选项会基于TPCDS_DBNAME变量(默认为TPCDS,但可更改)创建数据库名称。创建的表基于预生成的数据,并使用parquet格式,以提高处理效率。SQL语句用于创建表格,可以在src/ddl/individual中找到。

运行选项:“(2) - 运行TPC-DS查询子集”

在这里,您可以指定逗号分隔的查询列表。每个查询的结果都会在TPCDS_WORK_DIR中生成,默认目录位置为work。结果文件的格式与原始文档中的描述相同。

当选择此选项时,示例输出如下:

==============================================
TPC-DS On Spark 菜单
----------------------------------------------
设置
 (1) 创建Spark表格
运行
 (2) 运行TPC-DS查询子集
 (3) 运行所有(99)TPC-DS查询
清理
 (4) 清理
 (Q) 退出
----------------------------------------------
请输入您的选择,后面跟上[回车]: 1
----------------------------------------------

INFO: 正在创建表格。这可能需要几分钟...
INFO: 进度:[########################################] 100%
INFO: Spark表格创建成功。
按任意键继续

项目特点:

  1. 易用性 - 提供简单易用的命令行界面和Jupyter Notebook,便于设置和执行测试。
  2. 灵活性 - 支持选择运行特定查询或整个查询集。
  3. 可扩展性 - 可轻松调整数据规模,适应大规模数据处理的需求。
  4. 全面性 - 通过TPC-DS基准测试,涵盖数据处理引擎的关键性能指标。

对于希望深入了解Spark SQL性能,并在实际场景中优化数据仓库应用的开发者来说,这是一个不可多得的资源。立即尝试此项目,开始您的性能测试之旅吧!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍辰惟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值