基于hive-testbench实现TPC-DS测试

文章目录

    • TPC-DS测试概述
      • 1. TPC-H
      • 2. TPC-DS
    • 使用hive-testbench生成hive基准测试数据
      • 1.环境准备
        • 拉取代码
        • 安装gcc
        • 安装maven
      • 2.执行编译
      • 3.生成数据并加载到hive中
      • 4.使用Hue验证数据
      • 5.生成数据时的一些异常处理
        • Permission denied: user=root, access=WRITE
        • File does not exist: 3.0.0-cdh6.1.0-mr-framework.tar.gz

TPC-DS测试概述

TPC-DS测试基准是TPC组织推出的用于替代TPC-H的下一代决策支持系统测试基准。因此在讨论TPC-DS之前,先介绍一下TPC-H。

1. TPC-H

TPC-H是一款面向商品零售业的决策支持系统测试基准,它定义了8张表,22个查询,遵循SQL92。TPC-H的数据模型如图4所示。TPC-H基准的数据库模式遵循第三范式,叶晓俊教授等学者[6]认为“它的数据表数据特征单一(如数据不倾斜) ,其数据维护功能仅仅限制了潜在的对索引的过度使用,而没有测试DBMS 执行真实数据维护操作——数据提取、转换和加载(ETL) 功能的能力”。同时,新兴的数据仓库开始采用新的模型,如星型模型、雪花模型。TPC-H已经不能精准反映当今数据库系统的真实性能。为此,TPC组织推出了新一代的面向决策应用的TPC-DS 基准。

2. TPC-DS

TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。

TPC-DS的这个特点跟大数据的分析挖掘应用非常类似。Hadoop等大数据分析技术也是对海量数据进行大规模的数据分析和深度挖掘,也包含交互式联机查询和统计报表类应用,同时大数据的数据质量也较低,数据分布是真实而不均匀的。因此TPC-DS成为客观衡量多个不同Hadoop版本以及SQL on Hadoop技术的最佳测试集。这个基准测试有以下几个主要特点:

  • 一共99个测试案例,遵循SQL’99和SQL 2003的语法标准,SQL案例比较复杂
  • 分析的数据量大,并且测试案例是在回答真实的商业问题
  • 测试案例中包含各种业务模型(如分析报告型,迭代式的联机分析型,数据挖掘型等)
  • 几乎所有的测试案例都有很高的IO负载和CPU计算需求

这个基准测试的完整信息请参考http://www.tpc.org/tpcds/。

使用hive-testbench生成hive基准测试数据

hive-testbench是hortonworks的一个开源项目,github地址:http://github.com/hortonworks/hive-testbench, 该项目主要基于TPC-DS进行封装利用MapReduce的方式快速的生成Hive基准测试数据,接下来介绍如何编译及使用hive-testbench生成指定数据量的Hive基准测试数据。

1.环境准备

拉取代码

从github把代码下载下来,建议直接使用wget获取压缩包就行了

wget http://github.com/hortonworks/hive-testbench/archive/hdp3.zip
unzip hdp3.zip

[root@psd-hadoop042 tpcds]# ls
hdp3.zip  hive-testbench-hdp3

安装gcc

yum -y install gcc gcc-c++

安装maven

此处不详述,记得要配置环境变量PATH。如果没有安装,则在编译hive-testbench时会自动帮你安装到当前的编译目录

2.执行编译

这里只基于TPC-DS,TPC-H的编译方式一样,只是使用脚本为tpch-build.sh

进入hive-testbench目录

执行如下命令进行编译打包

./tpcds-build.sh 

等待编译结束

3.生成数据并加载到hive中

执行如下命令生成并加载数据

FORMAT=parquet ./tpcds-setup.sh 10 /tpcds

参数说明:

  • FORMAT=parquet ,指定格式化方式为parquet,也可以是rcfile等等,默认是textfile格式
  • 10表示生成的数据量大小GB单位
  • /tpcds表示数据在HDFS上生成的目录,目录不存在自动生成,如果不指定数据目录则默认生成到/tmp/tpcds目录下。

执行时我们可以看到生成数据的方式是向集群提交了一个MapReduce作业,这种方式更适合大量数据的快速生成

等待脚本执行成功

后面这个optimizing过程就是格式化数据为指定FORMAT格式的过程,最后我们生成了两个数据库

一个数据库中的格式是text,一个是parquet。

使用该命令hdfs dfs -du -h /tpcds/10 查看生成表的大小

数据总量与指定10GB数据量一致(注意:这里生成数据会与指定的量会有些许出入)

4.使用Hue验证数据

![image-20190505161141428](/Users/wangjian/Library/Application Support/typora-user-images/image-20190505161141428.png)

5.生成数据时的一些异常处理

Permission denied: user=root, access=WRITE

出现这种情况是权限的问题,尝试使用sudo -u hdfs这种命令指定执行用户来解决

File does not exist: 3.0.0-cdh6.1.0-mr-framework.tar.gz

如果出现如下问题,提示找不到3.0.0-cdh6.1.0-mr-framework.tar.gz文件

则你可能使用的是Cloudera Manager 6.x version.版本,通过CM的Web页面来安装yarn的MapReduce执行框架解决

你可能感兴趣的:(大数据)