Hive之路-生成tpcds数据

举报
BUG开发工程师 发表于 2021/04/22 16:58:20 2021/04/22
【摘要】 背景前面的文章,基本实现了从0搭建Hive的运行环境。包括Hadoop、Hive,也包括HiveServer2、Tez。距离在Hive上调试开发,还欠缺一套开发环境,待后续补充。而环境有了后,测试什么、用什么表示这个系统可用?大多时候,我们想额外学习一个软件或者开源项目时候,就容易陷入"安装-部署-安装-部署"的循环中。没有实际使用的场景,或者自己构造的场景不足以触发特性(考虑不周),我们...

背景

前面的文章,基本实现了从0搭建Hive的运行环境。包括Hadoop、Hive,也包括HiveServer2、Tez。距离在Hive上调试开发,还欠缺一套开发环境,待后续补充。
而环境有了后,测试什么、用什么表示这个系统可用?大多时候,我们想额外学习一个软件或者开源项目时候,就容易陷入"安装-部署-安装-部署"的循环中。没有实际使用的场景,或者自己构造的场景不足以触发特性(考虑不周),我们自己就容易不知所措而渐渐失去兴趣。

有一套业界通用或者共识性的测试套件或者数据,就容易解决这个问题(也避免陷入闭门造车的情况)。恰好,数据库是有标准的测试用例的。不止一套,本文选取了较为常见、且近几年更新、且有较多实际运行例子的测试数据集TPCDS。

版本

OS:Windows 10 Pro 1903
WSL: Ubuntu-18.04 VERSION 1 (查看命令 wsl.exe --list --verbose)
Java:1.8.0_261
maven: Apache Maven 3.6.3
tpcds:V3

前置依赖

  1. 安装gcc支持: 通过WSL-Ubuntu包管理安装
sudo apt update
sudo apt install build-essential
  1. 启动Hadoop(包括yarn)
  2. 启动hive metastore: 目前已从derby转为mysql,有兴趣再补充metastore迁移方式

配置步骤

Windows10环境下,WSL

  1. 下载
git clone https://github.com/hortonworks/hive-testbench.git

注意分支为 hdp3

  1. 打包程序
# 1. Windows下需要替换换行符
sed -i 's/\r$//' *.sh

# 2. 前置准备
bash tpcds-build.sh
  1. 脚本修改适配
  • 修改脚本,直接使用hive(WSL环境没有配置beeline)
    文件: tpcds-setup.sh
echo "TPC-DS text data generation complete."

#HIVE="beeline -n hive -u 'jdbc:hive2://localhost:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=default' "
HIVE="hive"

# Create the text/flat tables as external tables. These will be later be converted to ORCFile.
vim settings/init.sql
vim settings/load-flat.sql
vim settings/load-partitioned.sql
-- set hive.optimize.sort.dynamic.partition.threshold=0;
  1. 生成数据

生成步骤包括:

  • 调用tpcds-gen-1.0-SNAPSHOT.jar生成TEXT数据
  • 从TEXT导入并转存为ORC数据,并加上constraint
# 生成大小2G的数据集
# 生成文件放置于/tmp目录下

bash tpcds-setup.sh 2 /tmp

副产物:本地生成的导入脚本

cat load_orc_2.mk

可用性测试

  1. 登录hive
cd sample-queries-tpcds

hive
  1. 查看数据库结构
show databases;

describe database tpcds_text_2;
describe database tpcds_bin_partitioned_orc_2;
  1. 查询测试

注意:部分语句无法执行。hive3才开始支持全部TPCDS语句。

use tpcds_bin_partitioned_orc_2;

source query3.sql;  -- 约60s可以跑完,31行结果
source query15.sql; -- 潜在运行资源不足

query3结果: 单机约60s,31行结果

1998    4003002 exportiedu pack #2                                      744.26
1998    7014008 edu packnameless #8                                     683.34
1998    7013003 exportinameless #3                                      681.69
1998    4004001 edu packedu pack #1                                     574.06
1998    10003014        exportiunivamalg #14                                    533.89
1998    3003001 exportiexporti #1                                       434.29
1998    8011005 amalgmaxi #5                                            394.29
1999    7014008 edu packnameless #8                                     707.63
1999    7013003 exportinameless #3                                      692.77
1999    3003001 exportiexporti #1                                       583.01
1999    4003002 exportiedu pack #2                                      455.42
1999    4004001 edu packedu pack #1                                     424.78
1999    8011005 amalgmaxi #5                                            345.39
1999    10003014        exportiunivamalg #14                                    343.96
2000    3003001 exportiexporti #1                                       1108.86
2000    7014008 edu packnameless #8                                     743.30
2000    4004001 edu packedu pack #1                                     576.33
2000    10003014        exportiunivamalg #14                                    555.09
2000    4003002 exportiedu pack #2                                      445.96
2000    1002002 importoamalg #2                                         356.64
2001    1002002 importoamalg #2                                         562.68
2001    10003014        exportiunivamalg #14                                    501.64
2001    4003002 exportiedu pack #2                                      487.25
2001    7014008 edu packnameless #8                                     292.24
2001    6011006 amalgbrand #6                                           258.72
2002    1004001 edu packamalg #1                                        939.34
2002    8012002 amalgedu pack #1                                        813.40
2002    10003014        exportiunivamalg #14                                    502.43
2002    4003002 exportiedu pack #2                                      428.15
2002    7014008 edu packnameless #8                                     185.69
2002    6011006 amalgbrand #6                                           145.53

后续启动或停止

一般一次性生成,无需重复打包或者安装。
需要生成不同大小数据集,模仿调用:

bash tpcds-setup.sh 2 /tmp

其他问题

  1. \r command not found

原因: Windows的换行符不兼容WSL/cygwin

# 替换换行符
sed -i 's/\r$//' *.sh
  1. SSL证书问题
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

添加curl参数,不检查证书
修改文件 tpcds-gen/Makefile

tpcds_kit.zip:
        curl --insecure https://public-repo-1.hortonworks.com/hive-testbench/tpcds/README
        curl --insecure --output tpcds_kit.zip https://public-repo-1.hortonworks.com/hive-testbench/tpcds/TPCDS_Tools.zip
  1. mvn失败/mvn加速

手动指定settings.xml,修改repo
同样修改文件 tpcds-gen/Makefile

target/tpcds-gen-1.0-SNAPSHOT.jar: $(shell find -name *.java)
        mvn -s /mnt/d/.m2/settings-hive-wsl.xml package

clean:
        mvn -s /mnt/d/.m2/settings-hive-wsl.xml clean
  1. TEXT转ORC过程资源不足

考虑优化参数:distribute by [cr_returned_date_sk]
以优化写入分区的文件数量。

  1. GC overhead limit exceeded

增加hadoop heapsize大小配置

export HADOOP_HEAPSIZE=10240
use tpcds_bin_partitioned_orc_2;

source query15.sql;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。